Опубликован: 21.02.2012 | Уровень: специалист | Доступ: свободно
Лекция 7:

Интегрированная среда разработки VBA

< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Аннотация: Язык программирования Visual Basic for Application и среда его разработки включены в AutoCAD как его приложение. Средства VBA предоставляют простые способы настройки программы, автоматизации обработки чертежей и запуска других программ из основного приложения. Код VBA компилируется в исполняемый файл, который может быть запущен автономно. Проекты VBA хранятся в отдельных файлах с расширением .dvb, но могут быть сохранены и в файле чертежа.

Цель лекции: изучить редактор VBA и научиться составлять процедуры.

Редактор Visual Basic

Интерфейс

Кроме Visual LUISP в системе AutoCAD имеется вторая интегрированная среда для разработки приложений пользователя. В ней используется язык VBA - Visual Basic for Application. Для активизации среды VBA нужно выполнить команду Tools - Macro - Visual Basic Editor. Можно также набрать команду vbaide↵ (IDE - Integrated Development Enveronment - интегрированная среда разработки). В результате запуска этой команды активизируется окно редактора VBA (рис. 7.1).

Окно редактора Visual Basic

увеличить изображение
Рис. 7.1. Окно редактора Visual Basic

Интерфейс среды содержит меню, панель инструментов и четыре диалоговых окна:

  • окно проектов Project Explorer;
  • текстовый редактор модуля проекта (в проекте может быть несколько модулей);
  • окно свойств модуля Properties Window;
  • библиотека объектов Object Browser.

Элементы интерфейса устанавливаются через пункты меню Insert и View. Программный код размещается в модулях. В модуле можно создать новую процедуру по команде Insert - Procedure. Для перехода в программу AutoCAD можно щелкнуть по крайней левой кнопке панели инструментов. Заметим, что когда среда VBA активна, то AutoCAD продолжает работать в фоновом режиме.

В окне проектов Project Explorer отражается иерархия существующих встроенных и глобальных проектов и модулей этих проектов.

В окне Object Browser редактора VBA в левой панели представлен список объектов. При этом можно работать как с коллекциями, так и с отдельными объектами. Например, Acadlayer - слой как объект, а Acadlayers - набор слоев как объект. Поэтому, например, есть возможность добавить вновь созданный слой в набор слоев.

В правой панели окна Object Browser представлен список свойств и методов выделенного слева объекта. При составлении процедуры наименование свойств и методов объекта необходимо выбирать из этого списка.

Проекты

Приложения Autocad VBA оформлены в виде проектов. Проект представляет собой набор объектов, программных модулей, модулей классов и форм. Проект может быть сохранен как в рисунке (внедренный) так и во внешнем файле. Внедренный проект автоматически загружается при открытии рисунка. Ограничение внедренных проектов в том, например, что они не могут закрыть рисунок, внутри которого находятся. Глобальные проекты более гибки, но пользователь должен знать, где расположен файл, в котором хранятся макросы. Глобальный проект проще передавать другим пользователям, и в нем удобно хранить общие макросы. В любой момент могут быть использованы оба типа проектов. На уровне двоичного кода проект Autocad VBA не совместим с проектом Visual Basic, однако обмен формами, модулями и классами можно производить через экспорт-импорт. (Команды Export File, Import File).

Проекты можно создать по команде Tools - Macro - VBA manager. В диалоговом окне (рис. 7.2) производятся операции с проектами: создание, загрузка и выгрузка из программы, создание макросов.

Окно менеджера проектов

Рис. 7.2. Окно менеджера проектов

Файлы глобальных проектов имеют расширение dvb. Сохранять их нужно в каталогах, указанных в маршрутах поддержки (Tools - Options - Files - Support File Search Path).Из окна менеджера проектов можно перейти в редактор Visual Basic, где в модуле будут распечатаны процедуры выделенного проекта.

При загрузке проекта все глобальные процедуры, называемые также макросами, становятся доступными для использования. Загрузить проект можно через VBA-менеджер или из командной строки командой VBALoad. Кроме того, при открытии сеанса AutoCAD автоматически загружает проект с именем acad.dvb, который он ищет в путях файлов поддержки. При загрузке проекта может появиться предупреждение что он содержит макросы. Выгрузка проекта командной VBAUNLOAD приводит к освобождению памяти, ранее занятой проектом. Чтобы среда разработки VBA загружалась автоматически, в файл acad.arx нужно внести строку: acadvba.arx

Язык VBA

Основные элементы

Visual Basiс является объектно-ориентированным языком программирования. Главной особенностью этих языков является механизм инкапсуляции. Код и данные связываются вместе в одно целое. Они защищены от внешнего воздействия и от неправильного использования. Инкапсуляции позволяет создать объект.

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

Во всех случаях объект представляет собой переменную, тип которой определяется пользователем. Когда определяется объект, то неявным образом создается новый тип переменной. Объект имеет набор свойств, т.е. характеристик или величин, применяемых к данному объекту. Например, объект AcadLine обладает свойством StartPoint. Линия может быть красная, - цвет является свойством объектов AutoCAD. Кроме свойств, объекты характеризуются методами. Метод - это определенная операция, которая может быть выполнена над объектом. Например, объект AcadLine обладает методом Rotate.

Объектно-ориентированные языки программирования поддерживают полиморфизм, суть которого можно выразить фразой: "Один интерфейс - множество методов". Полиморфизм представляет собой атрибут, который позволяет использовать один и тот же интерфейс при реализации целого класса различных действий. Выбор того, какое именно действие будет совершено, определяется конкретной ситуацией.

Третьим атрибутом объектно-ориентированных языков программирования является наследование. Оно представляет собой процесс, благодаря которому один объект может наследовать, приобретать свойства от другого объекта. Это свойство поддерживает концепцию классификации, чем и обусловливается его важность. Такая концепция лежит в основе классификации знаний. Например, красное яблоко представляет собой часть класса яблоко. Этот класс, в свою очередь, представляет собой часть класса фрукты. Этот класс, в свою очередь, представляет собой часть класса продукты питания. Без использования классификации каждый объект должен был бы определять все свои характеристики явным образом. Благодаря механизму наследия объект нуждается только в определении таких качеств, которые отличают его от других объектов этого класса.

Семейство (объект Collection) представляет собой объект, содержащий несколько других объектов одного и того же типа. Каждый элемент семейства нумеруется и может быть идентифицирован либо по номеру, либо по имени.

Класс - это проект, на основе которого впоследствии будет создан конкретный объект. Класс определяет имя объекта, его свойства и методы, т.е. действия, выполняемые над объектом.

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

This Drowing. ModelSpace.AddCircle (center, radius)

Методы - это действия, выполняемые над объектом. Синтаксис применения: Объект.Метод

Свойства - это атрибуты объекта, определяющие его характеристики, такие как размер, цвет, положение на экране и состояние объекта (например, доступность или видимость). Чтобы изменить характеристики объекта, надо просто изменить значения его свойств:

Объект.Свойство=ЗначениеСвойства

События - это действия, распознаваемые объектом, например, Click или нажатие клавиши. Суть программирования на VBA как раз и заключается в этих двух понятиях: событие и отклик на него. Если пользователь производит какое-либо действие, например, нажимает кнопку, то в качестве отклика выполняется код созданной пользователем процедуры обработки события. Если процедуры нет, то система на данное событие не реагирует.

Чаще всего используют событие нажатия кнопки. Предварительно должна быть составлена процедура в модуле листа, например, для щелчка по кнопке CommandButton1:

Private Sub CommandButton1_Click()
MsgBox "Вы хотите выйти из программы?"
End Sub

Иерархия объектов

Все объекты AutoCAD организованы в виде иерархической структуры. Корнем дерева является объект Application

Через объект Application можно получить доступ к следующим объектам:

  • Preferences
  • Documents
  • MenuBar
  • MenuGroups

Через объект Preferences можно получить доступ к следующим объектам

  • PreferencesDisplay
  • PreferencesDrafting
  • PreferencesFiles
  • PreferencesOpenSave
  • PreferencesOutput
  • PreferencesProfiles
  • PreferencesSelection
  • PreferencesSystem
  • PreferencesUser

Через объект Documents можно получить доступ к объекту Document а через него к большинству других объектов и коллекций:

Blocks (блоки)

  • Dictionaries (словари)
  • DimStyles (размерные стили)
  • Groups (группы)
  • Layers (слои)
  • Layouts (Листы)
  • Linetypes (типы линий)
  • PlotConfigurations (настройки плоттеров)
  • RegisteredApplications (зарегистрированные приложения)
  • SelectionSets (наборы)
  • TextStyles (стили текста)
  • UserCoordinateSystems (системы координат определенные пользователем)
  • Views (виды)
  • Viewports (видовые экраны)
  • DatabasePreferences ()
  • Plot (печать)
  • Utility (служебные программы)
  • ModelSpace (пространство модели)
  • PaperSpace (пространство листа)

В двух последних расположены объекты AutoCAD, видимые на рисунке:

3DFace 
3DPoly 
3DSolid 
Arc 
Attribute 
AttributeReference 
BlockReference 
Circle 
Dim3PointAngular 
DimAligned 
DimAngular 
DimDiametric 
DimOrdinate 
DimRadial 
DimRotated 
Ellipse 
ExternalReference 
Hatch 
Leader 
LWPolyline 
Line 
MInsertBlock 
MLine 
MText 
Point 
PolyfaceMesh 
Polyline 
PolygonMesh 
RasterImage 
Ray 
Region 
Shape 
Solid 
Spline 
Text 
Tolerance 
Trace 
Xline 
< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Алексей Тимонин
Алексей Тимонин
Алексей Потапкин
Алексей Потапкин

Здравствуйте.

Подскажите, пожалуйста, каким образом можно передать параметры в макрос написанный в Autocad на VBA? Например, есть процедура, которая отрисовывает заштрихованный прямоугольник (см. ниже). Как её изменить, чтобы на входе от пользователя требовалось ввести также в качестве параметров координаты углов прямоугольника?

Public Sub DrawHatchedBox()

...

End Sub