18/03/2018
Подсветка сегмента полилинии
Этот код демонстрирует как использовать subentitypath для подсветки определенного сегмента полилинии. Вы можете использовать метод Unhighlight для снеятия подсветки сегмента полилинии (этот метод здесь не приводится). Не забудьте прочитать соответствующую тему по этому методу в ObjectARX Managed Reference Guide прежде чем использовать его в своём коде – там есть несколько деталей, которые следует учитывать.
Код - C#: [Выделить]
- [CommandMethod("HighlightPolySeg")]
- public static void HighlightPolySeg()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Editor ed = doc.Editor;
- // Просим пользователя указать полилинию
- PromptEntityOptions peo = new PromptEntityOptions("\nВыберите полилинию: ");
- peo.SetRejectMessage("\nЭто должна быть полилиния...");
- peo.AddAllowedClass(typeof(Polyline), true);
- PromptEntityResult per = ed.GetEntity(peo);
- if (per.Status != PromptStatus.OK) return;
- using (Transaction Tx = db.TransactionManager.StartTransaction())
- {
- Polyline pline =
- Tx.GetObject(per.ObjectId, OpenMode.ForRead) as Polyline;
- int nbSegments = pline.NumberOfVertices;
- if (!pline.Closed) --nbSegments;
- // Просим пользователя указать сегмент полилинии для подсветки
- PromptIntegerOptions pio = new PromptIntegerOptions(
- "\nУкажите номер сегмента [1-" + nbSegments.ToString() + "] :");
- pio.LowerLimit = 1;
- pio.UpperLimit = nbSegments;
- PromptIntegerResult pir = ed.GetInteger(pio);
- if (pir.Status != PromptStatus.OK) return;
- // Создаём subentpath для сегмента
- FullSubentityPath path =
- new FullSubentityPath(new ObjectId[] { pline.Id },
- new SubentityId(SubentityType.Edge, new IntPtr(pir.Value)));
- // Подсвечиваем сегмент
- pline.Highlight(path, true);
- }
- }
Источник: http://adndevblog.typepad.com/autocad/2012/07/highlighting-a-polyline-segment.html
Автор перевода: Александр Ривилис
Отредактировано 18.03.2018 в 01:28:14
Обсуждение: http://adn-cis.org/forum/index.php?topic=
Опубликовано 18.03.2018Отредактировано 18.03.2018 в 01:28:14