22/01/2016
Доступ к группам AutoCAD при помощи .NET
Так же, как и у других объектов, у групп есть идентификатор (ObjectId), к которым можно получить доступ при помощи словаря. Этот пример показывает как прочитать этот словарь, и что внутри него есть.
Код - VB.NET: [Выделить]
- <CommandMethod("getGroupIds")> _
- Public Sub CmdGetGroupIds()
- ' Вводим имя группы, список примитивов которой мы хотим получить
- Dim ed As Editor = Application.DocumentManager.
- MdiActiveDocument.Editor
- Dim groupName As PromptResult =
- ed.GetString("Укажите имя группы : ")
- ' Получаем рабочую базу данных
- Dim db As Database = Application.DocumentManager.
- MdiActiveDocument.Database
- ' Стартуем транзакцию
- Using trans As Transaction =
- db.TransactionManager.StartTransaction()
- ' Пробуем прочитать
- Try
- ' Получаем словарь ACAD_GROUP,
- ' который содержит все группы определённые в чертеже
- Dim acadGroup As DBDictionary =
- trans.GetObject(db.GroupDictionaryId, OpenMode.ForRead)
- ' теперь находим группу, имя которой ввели выше
- Dim groupRequired As Group =
- trans.GetObject(acadGroup(groupName.StringResult),
- OpenMode.ForRead)
- ' Мы получили запрошенную группу – посмотрим что внутри
- Dim entityIds As ObjectId() = groupRequired.GetAllEntityIds()
- Dim id As ObjectId
- For Each id In entityIds
- ' открываем примитив для чтения
- Dim ent As Entity = trans.GetObject(id, OpenMode.ForRead)
- ' создаём путь для подсветки
- Dim path As FullSubentityPath = New _
- FullSubentityPath(New ObjectId(0) _
- {id},
- New SubentityId(SubentityType.Null, 0))
- ' теперь подсвечиваем его
- ent.Highlight(path, True)
- Next
- trans.Commit()
- Catch
- End Try
- End Using
- End Sub
Источник: http://adndevblog.typepad.com/autocad/2012/05/access-autocad-group-subsystem-via-net.html
Автор перевода: Александр Ривилис
Отредактировано 22.01.2016 в 02:09:33
Обсуждение: http://adn-cis.org/forum/index.php?topic=3347
Опубликовано 22.01.2016Отредактировано 22.01.2016 в 02:09:33