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

22/01/2016

Доступ к группам AutoCAD при помощи .NET

Так же, как и у других объектов, у групп есть идентификатор (ObjectId), к которым можно получить доступ при помощи словаря. Этот пример показывает как прочитать этот словарь, и что внутри него есть.

Код - VB.NET: [Выделить]
  1. <CommandMethod("getGroupIds")> _
  2. Public Sub CmdGetGroupIds()
  3.   ' Вводим имя группы, список примитивов которой мы хотим получить
  4.   Dim ed As Editor = Application.DocumentManager.
  5.     MdiActiveDocument.Editor
  6.   Dim groupName As PromptResult =
  7.     ed.GetString("Укажите имя группы : ")
  8.   ' Получаем рабочую базу данных
  9.   Dim db As Database = Application.DocumentManager.
  10.     MdiActiveDocument.Database
  11.   ' Стартуем транзакцию
  12.   Using trans As Transaction =
  13.     db.TransactionManager.StartTransaction()
  14.     ' Пробуем прочитать
  15.     Try
  16.       ' Получаем словарь ACAD_GROUP,
  17.       ' который содержит все группы определённые в чертеже
  18.       Dim acadGroup As DBDictionary =
  19.         trans.GetObject(db.GroupDictionaryId, OpenMode.ForRead)
  20.       ' теперь находим группу, имя которой ввели выше
  21.       Dim groupRequired As Group =
  22.         trans.GetObject(acadGroup(groupName.StringResult),
  23.                         OpenMode.ForRead)
  24.       ' Мы получили запрошенную группу – посмотрим что внутри
  25.       Dim entityIds As ObjectId() = groupRequired.GetAllEntityIds()
  26.       Dim id As ObjectId
  27.       For Each id In entityIds
  28.         ' открываем примитив для чтения
  29.         Dim ent As Entity = trans.GetObject(id, OpenMode.ForRead)
  30.         ' создаём путь для подсветки
  31.         Dim path As FullSubentityPath = New  _
  32.           FullSubentityPath(New ObjectId(0) _
  33.                             {id},
  34.                             New SubentityId(SubentityType.Null, 0))
  35.         ' теперь подсвечиваем его
  36.         ent.Highlight(path, True)
  37.       Next
  38.       trans.Commit()
  39.     Catch
  40.  
  41.     End Try
  42.   End Using
  43. End Sub

 

Источник: http://adndevblog.typepad.com/autocad/2012/05/access-autocad-group-subsystem-via-net.html

 

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

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

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