A slightly more general approach, any Line Angle will do.
[CommandMethod("TestTextNearLine", CommandFlags.Redraw)]
public static void TestTextNearLine()
{
Document doc = null;
Editor ed = null;
Database db = null;
double maxTxtDist = 100;
double maxAngDiff = Math.PI / 180;
try
{
doc = AcadApp.DocumentManager.MdiActiveDocument;
ed = doc.Editor;
db = doc.Database;
var peo = new PromptEntityOptions("\nSelect Line: ");
peo.SetRejectMessage("\nLines only");
peo.AddAllowedClass(typeof(Line), false);
peo.AllowObjectOnLockedLayer = true;
peo.AllowNone = true;
var per = ed.GetEntity(peo);
if (per.Status != PromptStatus.OK)
{
return;
}
using (var tr = db.TransactionManager.StartTransaction())
{
var ln = tr.GetObject(per.ObjectId, OpenMode.ForRead) as Line;
var angle = ln.Angle;
var btr = (BlockTableRecord)tr.GetObject(ln.OwnerId, OpenMode.ForRead);
var dxRange = -maxTxtDist * Math.Sin(angle);
var dyRange= +maxTxtDist * Math.Cos(angle);
var selRange = new Point3dCollection();
selRange.Add(ln.StartPoint);
selRange.Add(ln.EndPoint);
selRange.Add(new Point3d(ln.EndPoint.X + dxRange, ln.EndPoint.Y + dyRange, ln.StartPoint.Z));
selRange.Add(new Point3d(ln.StartPoint.X + dxRange, ln.StartPoint.Y + dyRange, ln.StartPoint.Z));
//Just for debugging purposes
{
var pl = new Polyline();
for (int i = 0; i < selRange.Count; i++)
{
pl.AddVertexAt(i, new Point2d(selRange[i].X, selRange[i].Y), 0, 0, 0);
}
pl.Closed = true;
btr.UpgradeOpen();
btr.AppendEntity(pl);
tr.AddNewlyCreatedDBObject(pl, true);
}
var filter = new SelectionFilter(new[] { new TypedValue(0, "TEXT") });
var psr = ed.SelectWindowPolygon(selRange, filter);
//var psr = ed.SelectCrossingPolygon(selRange, filter);
if (psr.Status == PromptStatus.OK)
{
var selTxtIds = psr.Value.GetObjectIds().ToList();
//Skip Text when Angle <> Line Angle within ONE degree
foreach (var id in selTxtIds.ToList())
{
//Find text where Angle==Line Angle (or +180 degrees within ONE degree
var txt = tr.GetObject(id, OpenMode.ForRead) as DBText;
if (txt != null && !string.IsNullOrWhiteSpace(txt.TextString))
{
if (Math.Abs(txt.Rotation - ln.Angle) > maxAngDiff && Math.Abs(txt.Rotation + Math.PI - ln.Angle) * 180.0 / Math.PI > maxAngDiff)
{
selTxtIds.Remove(id);
}
}
}
ed.SetImpliedSelection(selTxtIds.ToArray());
}
tr.Commit();
}
}
catch (System.Exception ex)
{
ed?.WriteMessage($"\n{ex.Message}");
}
}

