Коллекции объектов
В AutoCAD большинство объектов (графических и неграфических) хранятся в составе коллекций (специальные объекты-контейнеры). Хотя коллекции и содержат различные типы данных, их можно обрабатывать с помощью схожих методов. Каждая коллекция имеет метод для добавления объекта в коллекцию или получения элемента из коллекции. Большинство коллекций используют методы Add (обычные коллекции -- Table) или SetAt (словари) для добавления объекта в коллекцию. На уровне исходного кода, классы-коллекции являются наследниками интерфейсов IEnumerable, ICollection. Большинство коллекций имеют схожие методы и свойства, что упрощает их использование и изучение; например, для перебора коллекции удобно использовать цикл foreach. Примерами членов коллекции в AutoCAD .NET API являются:
-
LayerTableRecord в таблице свойств LayerTable (как и аналогичные элементы любой таблицы имеющие суффикс Record);
-
Лист в словаре ACAD_LAYOUT;
-
Document в коллекции DocumentCollection;
-
Атрибуты Вхождения блока; Полный список подобных объектов представлен ниже:
| Название | Соответствующий .NET-класс | Комментарий |
|---|---|---|
| Block Table Record - запись таблицы блоков Получается через перебор объектов BlockTable | DatabaseServices.BlockTableRecord | Содержит все графические сущности в определении данного Блока (напомним, Блоком в объектной модели DWG являются именованные пространства -- модели, листов, а также специальных объектов, имеющих Вхождения блоков). |
| Block Table - таблица блоков Получается через транзакцию для Database.BlockTableId; | DatabaseServices.BlockTable | Содержит все Блоки чертежа (пояснение см. выше) |
| Named Objects Dictionary - именованный словарь объектов Получается через транзакцию для Database.NamedObjectsDictionaryId | DatabaseServices.DBDictionary | Содержит все словари чертежа |
| Dimension Style Table - таблица размерных стилей | DatabaseServices.DimStyleTable | Получается через транзакцию для Database.DimStyleTableId |
| Document Collection - коллекция открытых чертежей | ApplicationServices.DocumentCollection | Получается через ApplicationServices.Application.DocumentManager |
| Group Dictionary - коллекция всех Групп чертежа | DatabaseServices.DBDictionary | Получается через транзакцию для Database.GroupDictionaryId |
| Hyperlink Collection - коллекция гиперссылок объекта | DatabaseServices.HyperLinkCollection | Получается у объекта графической сущности DatabaseServices.Entity в рамках транзакции как свойство Hyperlinks |
| Layer Table - таблица всех слоев чертежа | DatabaseServices.LayerTable | Получается через транзакцию для Database.LayerTableId |
| Layout Dictionary - перечень всех листов документа | DatabaseServices.DBDictionary | Получается через транзакцию для Database.LayoutDictionaryId |
| Linetype Table - перечень всех типов линий документа | DatabaseServices.LinetypeTable | Получается через транзакцию для Database.LinetypeTableIdId |
| MenuBar Collection - коллекция всех классических меню | AutoCAD.AcadMenuBar(ActiveX) | Получается как ApplicationServices.Application.MenuBar с последующим приведением к интерфейсу AutoCAD.AcadMenuBar |
| MenuGroup Collection - коллекция всех ленточных меню | AutoCAD.AcadMenuGroups (ActiveX) | Получается как ApplicationServices.Application.MenuGroups с последующим приведением к интерфейсу AutoCAD.AcadMenuGroups |
| Plot Configuration Dictionary - именованные параметры печати чертежа | DatabaseServices.DBDictionary | Получается через транзакцию для Database.PlotSettingsDictionaryId |
| Registered Application Table - таблица зарегистрированных приложений | DatabaseServices.RegAppTable | Получается через транзакцию для Database.RegAppTableId |
| Text Style Table - перечень текстовых стилей | DatabaseServices.TextStyleTable | Получается через транзакцию для Database.TextStyleTableId |
| UCS Table - перечень всех определений ПСК (пользовательских систем координат) | DatabaseServices.UcsTable | Получается через транзакцию для Database.UcsTableId |
| View Table - перечень всех видов | DatabaseServices.ViewTable | Получается через транзакцию для Database.ViewTableId |
| Viewport Table - перечень всех видовых экранов | DatabaseServices.ViewportTable | Получается через транзакцию для Database.ViewportTableId |