Как корректно использовать функцию Line3d.IsOn(Point3d point)? Когда точка располагается в створе отрезка, она все равно возвращает true.
Код для примера:
[CommandMethod("test2")]
public static void test2()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
BlockTableRecord ms = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
Line l = (Line)trans.GetObject(ed.GetEntity("\nline:").ObjectId, OpenMode.ForRead);
Point3d pnt = ed.GetPoint("\npoint:").Value;
Line3d ll = new Line3d(l.StartPoint, l.EndPoint);
if (ll.IsOn(pnt))
{
Circle c = new Circle(pnt, Vector3d.ZAxis, 1);
ms.AppendEntity(c);
trans.AddNewlyCreatedDBObject(c, true);
}
trans.Commit();
}
}
И вот, как работает эта функция: