Я думаю, что твоя проблема в том, что все линии проходят через одну точку. И в этом случае AutoCAD обрабатывает первую.
Вот простенький пример, когда ближе к концам отрезка выбирается продолжение отрезка, а в середине - нормаль к отрезку. Срабатывают все три линии:
Acad::ErrorStatus
MkrInfo::getOsnapInfo(
AcDbEntity* pickedObject,
int gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcArray<AcGePoint3d>& snapPoints,
AcArray<int>& geomIdsForPts,
AcArray<AcGeCurve3d*>& snapCurves,
AcArray<int>& geomIdsForLines)
{
AcDbLine *p = AcDbLine::cast(pickedObject);
if (p)
{
AcGePoint3d startP = p->startPoint(),
endP = p->endPoint(),
midPt = startP + 0.5 * (endP - startP);
AcGeLineSeg3d *pls1 = new AcGeLineSeg3d;
pls1->set(startP, (endP - startP));
snapCurves.append(pls1);
AcGeLineSeg3d *pls2 = new AcGeLineSeg3d;
pls2->set(endP, (endP - startP));
snapCurves.append(pls2);
AcGeLineSeg3d *pls3 = new AcGeLineSeg3d;
pls3->set(midPt, (endP - startP).perpVector());
snapCurves.append(pls3);
}
return Acad::eOk;
}