22/01/2016
Перебор всех групп в чертеже
Следующий код показывает, как можно перебрать все группы в чертеже при помощи итерации по словарю групп. Этот код так же показывает, как получить все идентификаторы объектов внутри каждой из групп.
Код - C#: [Выделить]
- [CommandMethod("listGroup")]
- static public void listGroup()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Editor ed = doc.Editor;
- using (Transaction tr = db.TransactionManager.StartTransaction())
- {
- DBDictionary groups = tr.GetObject(db.GroupDictionaryId,
- OpenMode.ForRead) as DBDictionary;
- foreach (DBDictionaryEntry entry in groups)
- {
- Group group = (Group)tr.GetObject(
- entry.Value, OpenMode.ForRead);
- ObjectId[] ids = group.GetAllEntityIds();
- // проверяем не анонимная ли группа
- // group.IsAnonymous;
- // получаем каждый примитив в группе
- /*
- foreach (ObjectId id in ids)
- {
- // получаем очередной примитив....
- }
- */
- ed.WriteMessage(group.Name + " содержит "
- + ids.Length.ToString() + " примитивов\n");
- }
- tr.Commit();
- }
- }
Источник: http://adndevblog.typepad.com/autocad/2012/06/iterating-through-the-group-dictionary.html
Автор перевода: Александр Ривилис
Отредактировано 23.01.2016 в 02:09:14
Обсуждение: http://adn-cis.org/forum/index.php?topic=3351
Опубликовано 22.01.2016Отредактировано 23.01.2016 в 02:09:14