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

25/01/2016

Как найти группы, которым принадлежит примитив

Группы хранятся как постоянные реакторы в примитиве AutoCAD, так что можно воспользоваться методом DbObject.GetPersistentReactorIds для получения списка групп, с которыми ассоциирован примитив. Следующий код показывает как это можно сделать: 

Код - C#: [Выделить]
  1. [CommandMethod("FindGroup")]
  2. static public void FindGroup()
  3. {
  4.     Document doc =
  5.         Application.DocumentManager.MdiActiveDocument;
  6.     Database db = doc.Database;
  7.     Editor ed = doc.Editor;
  8.     PromptEntityResult acSSPrompt =
  9.         ed.GetEntity("Выберите примитив для поиска групп: ");
  10.  
  11.     if (acSSPrompt.Status != PromptStatus.OK)
  12.         return;
  13.  
  14.     using (Transaction Tx =
  15.         db.TransactionManager.StartTransaction())
  16.     {
  17.         Entity ent = Tx.GetObject(acSSPrompt.ObjectId,
  18.                                 OpenMode.ForRead) as Entity;
  19.         ObjectIdCollection ids = ent.GetPersistentReactorIds();
  20.  
  21.         bool bPartOfGroup = false;
  22.         foreach (ObjectId id in ids)
  23.         {
  24.             DBObject obj = Tx.GetObject(id, OpenMode.ForRead);
  25.  
  26.             if (obj is Group)
  27.             {
  28.                 Group group = obj as Group;
  29.                 bPartOfGroup = true;
  30.                 ed.WriteMessage(
  31.                     "Примитив входит в группу " + group.Name + " \n");
  32.  
  33.             }
  34.         }
  35.  
  36.         if(!bPartOfGroup)
  37.             ed.WriteMessage(
  38.                    "Примитив не входит ни в одну из групп \n");
  39.         Tx.Commit();
  40.     }
  41. }

 

Источник: http://adndevblog.typepad.com/autocad/2012/04/how-to-detect-whether-entity-is-belong-to-any-group-or-not.html

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

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

Опубликовано 25.01.2016
Отредактировано 26.01.2016 в 09:56:48