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

18/03/2018

Подсветка сегмента полилинии

Этот код демонстрирует как использовать subentitypath для подсветки определенного сегмента полилинии. Вы можете использовать метод Unhighlight для снеятия подсветки сегмента полилинии (этот метод здесь не приводится). Не забудьте прочитать соответствующую тему по этому методу в ObjectARX Managed Reference Guide прежде чем использовать его в своём коде – там есть несколько деталей, которые следует учитывать.

Код - C#: [Выделить]
  1. [CommandMethod("HighlightPolySeg")]
  2. public static void HighlightPolySeg()
  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.   peo.SetRejectMessage("\nЭто должна быть полилиния...");
  10.   peo.AddAllowedClass(typeof(Polyline), true);
  11.   PromptEntityResult per = ed.GetEntity(peo);
  12.   if (per.Status != PromptStatus.OK) return;
  13.   using (Transaction Tx = db.TransactionManager.StartTransaction())
  14.   {
  15.     Polyline pline =
  16.         Tx.GetObject(per.ObjectId, OpenMode.ForRead) as Polyline;
  17.     int nbSegments = pline.NumberOfVertices;
  18.     if (!pline.Closed) --nbSegments;
  19.     // Просим пользователя указать сегмент полилинии для подсветки
  20.     PromptIntegerOptions pio = new PromptIntegerOptions(
  21.           "\nУкажите номер сегмента [1-" + nbSegments.ToString() + "] :");
  22.     pio.LowerLimit = 1;
  23.     pio.UpperLimit = nbSegments;
  24.     PromptIntegerResult pir = ed.GetInteger(pio);
  25.     if (pir.Status != PromptStatus.OK) return;
  26.     // Создаём subentpath для сегмента
  27.     FullSubentityPath path =
  28.         new FullSubentityPath(new ObjectId[] { pline.Id },
  29.         new SubentityId(SubentityType.Edge, new IntPtr(pir.Value)));
  30.     // Подсвечиваем сегмент
  31.     pline.Highlight(path, true);
  32.   }
  33. }

 

Источник: http://adndevblog.typepad.com/autocad/2012/07/highlighting-a-polyline-segment.html

 

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

Обсуждение: http://adn-cis.org/forum/index.php?topic=

Опубликовано 18.03.2018
Отредактировано 18.03.2018 в 02:28:14