Доступ к иерархии объектов. Коллекции, свойства и методы — КиберПедия 

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Доступ к иерархии объектов. Коллекции, свойства и методы

2021-06-30 36
Доступ к иерархии объектов. Коллекции, свойства и методы 0.00 из 5.00 0 оценок
Заказать работу

Связь VBA с активным чертежом обеспечивается посредством объекта ThisDrawing. С его помощью можно получить немедленный доступ ко всем свойствам и методам объекта Document а также ко всем другим объектам в иерархии.

Когда используются глобальные проекты, ThisDrawing всегда ссылается на активный документ. При использовании внедренных проектов ThisDrawing всегда ссылается на документ, содержащий проект. Например, следующая строка кода в глобальном проекте сохраняет любой чертеж, который в данный момент активен:

ThisDrawing.Save

Ссылка на объекты в иерархии объектов

Доступ к объекту можно получить непосредственно или через объектную переменную. Для непосредственной сслыки на объект достаточно указать полный путь к нему в иерархии. Например, следующий фрагмент кода добавляет линию в пространство модели:

Sub Test()Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double Dim LineObj As AcadLine startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0 endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0 Set LineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)End Sub

Для доступа к объекту через объектную переменную поступаем следующим образом. Определяем переменную желаемого типа, после чего устанавливаем переменную так, чтобы она ссылалась на нужный объект. К примеру следующий код определит объектную переменную moSpace типа AcadModelSpace так, чтобы она ссылалась на текущее пространство модели:

Dim moSpace As AcadModelSpaceSet moSpace = ThisDrawing.ModelSpace

В примере добавляем линию в пространство модели, используя эту переменную:

Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As DoubleDim LineObj as AcadLinestartPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0Set LineObj = moSpace.AddLine(startPoint,endPoint)

Корневой объект Application расположен в иерархии выше объекта Document. Выше показано, что объект ThisDrawing обеспечивает доступ к объекту Document. А у объекта Document есть свойство Application, которое и является ссылкой на объект Application. Пример обращения:

ThisDrawing.Application.Update

Коллекции объектов

Объект Collection - является предопределенным объектом содержащим все вхождения подобных объектов. Существуют следующие объекты коллекции:

· Documents - включает все открытые в текущей сессии документы

· ModelSpace - включает все графические объекты (entities - примитивы) пространства модели

· PaperSpace - включает все графические объекты пространства активного листа

· Block Object - включает все указанные определения блоков

· Blocks - включает все блочные ссылки рисунка

· Dictionaries - включает все словари (Dictionaries) рисунка

· DimStyles - включает все размерные стили рисунка

· Groups - включает все группы рисунка

· Hyperlinks - включает все гиперссылки рисунка

· Layers - включает все слои рисунка

· Layouts - включает все листы рисунка

· Linetypes - включает все типы линий рисунка

· MenuBar - включает все отображаемые AutoCADом меню

· MenuGroups - включает все меню и панели инструментов

· RegisteredApplications - включает все зарегистрированные приложения

· SelectionSets - включает все наборы рисунка

· TextStyles - включает все стили текста рисунка

· UCSs - включает все пользовательские системы координат рисунка

· Views - включает все Виды рисунка

· Viewports - включает все видовые экраны рисунка

Доступ к коллекции

Большинство коллекций доступны через объект Document, т.к. он содержит свойства для каждой из коллекций. Следующий код устанавливает ссылку объектной переменной на коллекцию Layers:

Dim layerCollection as AcadLayersSet layerCollection = ThisDrawing.Layers

Коллекции Documents, MenuBar и MenuGroups доступнычерезобъект Application. Он содержит свойства для каждой из этих коллекций. Следующий пример определяет объектную переменную и создает ссылку через нее на коллекцию:

Dim MenuGroupsCollection as AcadMenuGroupsSet MenuGroupsCollection = ThisDrawing.Application.MenuGroups

Добавление нового элемента коллекции

Следующий пример создает слой и добавляет его в коллекцию:

Dim newLayer as AcadLayerSet newLayer = ThisDrawing.Layers.Add("MyNewLayer")

Перебор членов коллекции

Для выбора нужного члена коллекции используется метод Item. В качестве параметра ему передается номер (Index) объекта в коллекции либо его символьный идентификатор. Пример демонстрирует перебор всех слоев с отображением их имен

Sub IterateLayer()On Error Resume Next Dim I As Integer Dim msg As String msg = "" For I = 0 To ThisDrawing.Layers.count - 1 msg = msg + ThisDrawing.Layers.Item(I).Name + vbCrLfNext MsgBox msgEnd Sub

Пример поиска слоя с именем ABC:

Sub FindLayerABC() On Error Resume Next Dim ABCLayer As AcadLayer Set ABCLayer = ThisDrawing.Layers.Item("ABC")If Err <> 0 Then MsgBox "Слой 'ABC' не существует" End IfEnd Sub

Примечание

Не следует использовать методы редактирования примитивов (Copy, Array, Mirror и др.) на любом объекте который одновременно перебирается с помощью механизма For Each. В случае необходимости нужно закончить перебор, создать временный массив эквивалентный коллекции и в этом массиве выполнить редактирование.

Удаление члена коллекции

Пример удаления слоя:

Dim ABCLayer as AcadLayerSet ABCLayer = ThisDrawing.Layers.Item("ABC")ABCLayer.Delete

Удаленный объект восстановлению не подлежит.

Понятие свойств и методов

Каждый объект обладает связанными с ним свойствами и методами. Свойства описывают некоторые характеристики присущие объекту, а методы позволяют выполнять действия над объектами, в частности, менять и читать свойства. Например, объект окружность имеет свойство Центр, которое представляет трехмерную координату центра окружности. Чтобы сменить свойство достаточно задать ему другое значение. Окружность как целое имеет метод Offset, который создает новый объект на указанном смещении от существующего. Полный перечень свойств и методов есть в ActiveX and VBA Reference.


Поделиться с друзьями:

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.