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

22/01/2016

Перебор всех групп в чертеже

Следующий код показывает, как можно перебрать все группы в чертеже при помощи итерации по словарю групп. Этот код так же показывает, как получить все идентификаторы объектов внутри каждой из групп.

Код - C#: [Выделить]
  1. [CommandMethod("listGroup")]
  2. static public void listGroup()
  3. {
  4.     Document doc = Application.DocumentManager.MdiActiveDocument;
  5.     Database db = doc.Database;
  6.     Editor ed = doc.Editor;
  7.  
  8.     using (Transaction tr = db.TransactionManager.StartTransaction())
  9.     {
  10.         DBDictionary groups = tr.GetObject(db.GroupDictionaryId,
  11.                                    OpenMode.ForRead) as DBDictionary;
  12.  
  13.         foreach (DBDictionaryEntry entry in groups)
  14.         {
  15.             Group group = (Group)tr.GetObject(
  16.                                 entry.Value, OpenMode.ForRead);
  17.             ObjectId[] ids = group.GetAllEntityIds();
  18.  
  19.             // проверяем не анонимная ли группа
  20.             // group.IsAnonymous;
  21.  
  22.             // получаем каждый примитив в группе
  23.             /*
  24.             foreach (ObjectId id in ids)
  25.             {
  26.                 // получаем очередной примитив....
  27.             }
  28.             */
  29.  
  30.             ed.WriteMessage(group.Name + " содержит "
  31.                             + ids.Length.ToString() + " примитивов\n");
  32.  
  33.  
  34.         }
  35.  
  36.         tr.Commit();
  37.     }
  38. }

 

Источник: http://adndevblog.typepad.com/autocad/2012/06/iterating-through-the-group-dictionary.html

 

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

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

Опубликовано 22.01.2016
Отредактировано 23.01.2016 в 02:09:14