ADN Open CIS
Сообщество программистов Autodesk в СНГ

01/08/2021

Метод Editor.Snap для изменения режима привязки точки

При использовании метода Editor.GetEntity часто требуется получить в точности все координаты точки указания, используемые для выбора объекта.

Например, рассмотрим следующую ситуацию. Построим окружность с центром в точке point (0,0,5) и радиусом 5 в плоскости XY МСК при виде сверху.

При выборе точке на окружности с использованием Editor.GetEntity, PromptEntityResult.PickedPoint вернул:

(3.50064192661003 , 3.35618169844321 , 0)

Чтобы получить все координаты, можно воспользоваться методом получения ближайшей точки с использованиемEditor.Snap, которая вернет так же и координату Z выбранной точки. 

Код:

Код - C#: [Выделить]
  1. [CommandMethod("getEntityPickPoint")]
  2. public static void getEntityPickPoint()
  3. {
  4.     Document doc = Application.DocumentManager.MdiActiveDocument;
  5.     Database db = doc.Database;
  6.     Editor ed = doc.Editor;
  7.  
  8.     PromptEntityOptions peo = new PromptEntityOptions("\nВыберите объект: ");
  9.     PromptEntityResult per = ed.GetEntity(peo);
  10.     if (per.Status == PromptStatus.OK)
  11.     {
  12.         Point3d pickedPoint = per.PickedPoint;
  13.         Point3d pickedPtOsnap = ed.Snap("_near", pickedPoint);
  14.  
  15.         ed.WriteMessage("\n Указанная точка: {0}", pickedPoint.ToString());
  16.         ed.WriteMessage("\n Указанная точка с учетом привязки Ближайшая: {0}", pickedPtOsnap);
  17.     }
  18. }

 

Результат:

Команда: GETENTITYPICKPOINT
Выберите объект:
Указанная точка: (3.50064192661003,3.35618169844321,0)
Указанная точка с учетом привязки Ближайшая: (3.60921996485993,3.46027907043009,5)

 

Источник: https://adndevblog.typepad.com/autocad/2020/06/editorsnap-method-to-change-the-snap-mode-of-point.html

Автор перевода: Александр Ривилис
Опубликовано 01.08.2021