25/01/2016
Как найти группы, которым принадлежит примитив
Группы хранятся как постоянные реакторы в примитиве AutoCAD, так что можно воспользоваться методом DbObject.GetPersistentReactorIds для получения списка групп, с которыми ассоциирован примитив. Следующий код показывает как это можно сделать:
Код - C#: [Выделить]
- [CommandMethod("FindGroup")]
- static public void FindGroup()
- {
- Document doc =
- Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Editor ed = doc.Editor;
- PromptEntityResult acSSPrompt =
- ed.GetEntity("Выберите примитив для поиска групп: ");
- if (acSSPrompt.Status != PromptStatus.OK)
- return;
- using (Transaction Tx =
- db.TransactionManager.StartTransaction())
- {
- Entity ent = Tx.GetObject(acSSPrompt.ObjectId,
- OpenMode.ForRead) as Entity;
- ObjectIdCollection ids = ent.GetPersistentReactorIds();
- bool bPartOfGroup = false;
- foreach (ObjectId id in ids)
- {
- DBObject obj = Tx.GetObject(id, OpenMode.ForRead);
- if (obj is Group)
- {
- Group group = obj as Group;
- bPartOfGroup = true;
- ed.WriteMessage(
- "Примитив входит в группу " + group.Name + " \n");
- }
- }
- if(!bPartOfGroup)
- ed.WriteMessage(
- "Примитив не входит ни в одну из групп \n");
- Tx.Commit();
- }
- }
Автор перевода: Александр Ривилис
Отредактировано 26.01.2016 в 09:56:48
Обсуждение: http://adn-cis.org/forum/index.php?topic=3359
Опубликовано 25.01.2016Отредактировано 26.01.2016 в 09:56:48