Лекция 7. Интегрированная среда разработки VBA — КиберПедия 

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

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

2021-06-30 41
Лекция 7. Интегрированная среда разработки VBA 0.00 из 5.00 0 оценок
Заказать работу

Цель лекции: изучить редактор 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).


увеличить изображение
Рис. 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

Создание кода VBA

Термины и определения

Прежде всего, нужно познакомиться с определением терминов и компонентов языка VBA.

Термин Определение
Процедура Именованный код, выполняющий определенные действия. Процедура может быть подпрограммой, функцией или свойством
Проект Набор форм и модулей
Модуль Набор подпрограмм, функций и объявлений, связанных друг с другом и выполняющих конкретную задачу
Форма Контейнер визуальных компонентов (кнопки, поля ввода и пр.)
Подрограмма Не возвращающая значение процедура на языке VBA
Функция Возвращающая значение процедура на языке VBA
Свойство Определяющая значение (свойство) объекта процедура на языке VBA
Объявление Один или несколько невыполняемых операторов, именующих константы или переменные и определяющих их атрибуты (например, тип данных)
Макрос Общедоступная подпрограмма, которая может быть непосредственно выполнена пользователем

Создание процедуры

Проект VBA представляет собой файл с расширением dvb, в котором хранится весь код. Проект состоит из компонентов: процедур, диалоговых окон, форм и пр.Процедуры помещают в один или нескольких модулей. Окно модуля можно вставить, нажав на стрелку кнопки Insert (рис. 7.3).


увеличить изображение
Рис. 7.3. Вставка модуля и процедуры

Так же может быть в модуле создана базовая процедура. В диалоговом окне Add Insert нужно указать имя новой процедуры, ее тип и область видимости Public или Private. Если процедура определена как Public (открытая, глобальная), то она доступна в других модулях и в диалоговом окне vbarun среды AutoCAD. Процедура, определенная как private (закрытая, локальная) видна только в том модуле, где она определена.

Если установить флажок All local variables as Statics (Все локальные переменные статические), то переменные будут сохранять свои значения и применять их при повторном запуске процедуры.

Рассмотрим синтаксис VBA на примере фрагмента кода, рисующего параллелепипед.

   ' Вставка параллелепипедаPublic Sub Box () 'объявляем переменные для использования в AddBoxDim dCenter (0 To 2) As Double    'массивчиселсплавающейточкой (x,y,z)Dim dLength      As Double          ' длинаDim dWidth       As Double          ' ширинаDim dHeight      As Double          ' высотаDim MyBox       As Acad3DSolid ' возвращаемое значение   ' задание значений переменных:dCenter (0) = 0#  ' # указывает на двойную точность значенийdCenter (1) = 0#  ' с плавающей точкойdCenter (2) = 0#   ' задание размеров параллелепипеда:dLength = 10#    dWidth = 20#              dHeight = 30#     ' создание чертежа параллелепипеда в пространстве моделиSet MyBox = ThisDrawing.ModelSpace.AddBox(dCenter, dLength, dWidth, dHeight)' изменение точки обзора для лучшего осмотраThisDrawing.SendCommand ("_VPOINT 1,1,1 _Shademode Gouraud ")End Sub

1. Любой текст, начинающийся с апострофа, является комментарием.

2. В одном проекте может быть несколько модулей. В одном модуле может быть несколько процедур. Ключевое слово Sub указывает на начало новой подпрограммы, как именованного фрагмента кода. Следующее слово Box - имя подпрограммы. В круглых скобках должны быть указаны параметры, если они передаются процедуре. Если параметров нет, то скобки оставляют пустыми.

3. Объявлять переменные можно с помощью ключевого слова Dim. DCenter - это переменная, содержащая координаты центра параллелепипеда. Выражение (0 To 2) означает, что переменная содержит три значения - для координат X,Y,Z. При объявлении переменных указывается их тип. Double - вещественный тип данных, вычисляемых с двойной точностью. Подходит для большинства координат.

4. Для задания значений длины, ширины и высоты параллелепипеда создаются переменные dLength, dWidth, dHeigh. Так как они объявлены переменными типа Double, то для удобства восприятия программы перед именами этих переменных добавлена буква d.

5. Переменная MyBox объявлена принадлежащей типу Acad3DSolid. Информация о типах данных AutoCAD может быть найдена в окне Object Browser или в окне AutoCAD по команде Help - Additional Resources - Developer Help - Contents - ActiveX and VBA Reference - Object Model. Значением переменных этого типа являются объекты чертежа.

6. Далее объявленным переменным присваиваются численные значения. Символ решетки # используется для указания двойной точности значений с плавающей точкой. Задание повышенной точности очень важно для всех чертежей. Именно поэтому и существует режим объектных привязок.

7. Оператор Set используется для присвоения переменной некоторого значения. В нашем примере переменной MyBox присваивается значение типа Acad3DSolid, возвращаемое методом AddBox (dCenter, dLength, dWidth, dHeight). Этот метод принадлежит объекту ModelSpace, который, в свою очередь, принадлежит объекту ThisDrawing. Указывать еще более высокий по иерархии объект нет необходимости, так как и чертеж, и редактор VBA, оба находятся в приложении AutoCAD.

8. Команда VPoint используется для изменения точки обзора, - иначе параллелепипед будет выглядеть как квадрат. Пробел между числами и закрывающей кавычкой определяет конец команды. Он эквивалентен нажатию клавиши ENTER при ручном вводе команд или символу "" пустых кавычек в процедурах AutoLISP.

9. Подпрограмма закрывается оператором End Sub.

Имя модуля можно задать в окне свойств Properties. Чтобы сохранить файл проекта, щелкните на кнопке Save панели инструментов среды VBA. При этом откроется диалоговое окно Save as. Выберите каталог, включенный в список маршрутов поддержки AutoCAD.

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

· набрать в командной строке VbaLoad;

· выделитькоманду Tools - Macro - Load Project.

При загрузке программа просит подтвердить намерение подключить макросы.

Запуск загруженной процедуры можно произвести двумя способами:

· набрать в командной строке VbaRun;

· выделить команду Tools - Macro - Macros.

В открывшемся диалоговом окне Macros выберите модуль, который хотите запустить, и щелкните по кнопке RUN.

Задание 7.1

Создание, сохранение и запуск процедур

1. Создайте новый чертеж. По команде Tools - Macro - Visual Basic Editor откройте редактор процедур.

2. Вставьте модуль по команде Insert - Module. Дайте ему имя TORUS. Вставьте процедуру по команде Insert - Procedure. Установите тип Sub, имя DrawTorus, область видимости - Public.

3. Введите следующий код:

4. ' Вставка тора на чертеж5. Public Sub DrawTorus ()6. 'объявляем переменные для использования в AddTorus7. Dim dCenter (0 To 2) As Double 8. 'массив чисел с плавающей точкой (x,y,z)9. Dim dRadius1      As Double     ' радиустора10.Dim dRadius2       As Double           ' радиуструбкитора11.Dim MyTorus       As Acad3DSolid ' возвращаемое значение12. ' задание значений переменных:13.dCenter (0) = 0# ' # указывает на двойную точность значений14.dCenter (1) = 0# ' с плавающей точкой15.dCenter (2) = 0#16. ' задание размеров тора:17.dRadius1 = 10#    18.dRadius2 = 2#         19.' создание чертежа тора в пространстве модели20.Set MyTorus = ThisDrawing.ModelSpace.AddTorus(dCenter, dRadius1, dRadius2)21.' изменение точки обзора для лучшего осмотра22.ThisDrawing.SendCommand ("_VPOINT 1,1,1 _Shademode Gouraud ")23.End Sub

Поскольку эта процедура активна, ее не нужно загружать. Щелкните по кнопке SAVE стандартной панели инструментов и сохраните проект под именем TORUS. dvb в каталоге AutoCAD\Support. Вернитесь в пространство модели. Выберите команду Tools - Macro - Macros. В открывшемся диалоговом окне Macros выберите процедуру DrawTorus и щелкните по кнопке RUN.

Переменные и операторы

Наиболее употребительными в языке VBA являются следующие элементы: переменные, константы, функции, ключевые слова и операторы.

Переменная - это именованное хранилище для значения, которое будет востребовано программой. В языке VBA явно объявлять переменные не обязательно. Переменной считается величина, впервые упомянутая в левой части оператора присваивания. Для присваивания значений можно пользоваться оператором Set:

Set cir = ThisDrawing.ModelSpace.AddCircle(dCenter, dRadius)

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

· для хранения переменной используется меньший объем памяти;

· после явного объявления переменной редактор проверяет написание ее имени при дальнейшем наборе кода.

При объявлении переменных можно задавать область их доступности:

· Public dCenter As Double - открытыепеременные. С ними могут работать все процедуры проекта;

· Dim dRadius1 As Double или Private dRadius2 As Double - переменные уровня модуля, доступны всем процедурам модуля. Их объявление начинается со слова Dim или Private;

· Radius3 = 5 - переменные уровня процедуры, могут использоваться только в теле процедуры, если они объявлены до использования.

Выражение Option Explicit (Явное объявление), помещенное в разделе объявлений, требует явного объявления всех переменных. В противном случае будет выведено сообщение об ошибке.

В таблице описаны типы переменных VBA:

Тип Описание
Boolean Принимает только два значения: TRUE или FALSE
Byte Положительное целое число от 0 до 255
Integer Целое число от -32768 до 32767
Long Целое число от -2147483648 до 2147483648
Currency Дробное число для хранения денежных значений, требующих точности в несколько знаков после запятой
Single Числа с плавающей точкой одинарной точности. Используют меньше памяти, чем числа с двойной точностью, но имеют меньший диапазон значений
Double Числа с плавающей точкой двойной точности. Обычно используется для хранения координат
Date Дата и время в формате десятичного действительного числа. Число слева от десятичной точки - дата, справа - время
String Текстовая строка, содержащая буквы, цифры, пробелы, знаки препинания
Object Объект приложения, чертеж или объект чертежа
Variant Универсальная переменная, способная содержать значение любого типа. Если не указан явно тип переменной, то ей присваивается тип Variant

Константы могут использоваться в любом месте программного кода для представления именованного значения. Например, часто используются константы цвета или даты.

Функции VBA часто похожи на функции других языков программирования. Например, date возвращает текущую системную дату.

Ключевые слова используются в составе выражений VBA. Например, Set.

Оператор (Statement) - основная единица программного кода, содержащая законченную инструкцию. Существует три вида операторов:

· операторы объявления имен переменных, констант или процедур: Dim dCenter As Double;

· операторы присвоения значения переменным dCenter = 0#

· исполняемые операторы, заставляющие компьютер выполнить определенные действия: Set MyTorus = ThisDrawing.ModelSpace. AddTorus _ (dCenter, dRadius1, dRadius2)

Операторы формируют все действия в процедуре. В частности, они осуществляют все арифметические операции (+ - * / ^), конкатенацию текстовых строк (&), логические операции (and, not,or).

Условные операторы изменяют последовательность выполнения операций (For Each…Next, If…Then…Else).

Полный список терминов VBA можно получить в редакторе VBA с помощью команды: Help - Microsoft Visual Basic Help - Contents - Visual Basic Language Reference.

Одной из задач программирования является организация интерактивности, т.е. возможности получения программой информации от пользователя. Это можно сделать двумя способами - из командной строки и через диалоговое окно.

Пример.

Рассмотрим обращение к объекту Utility. Он принадлежит объекту Document и управляет методами получения информации от пользователя.

Dim iReturn as IntegeriReturn = ThisDrawing.Utility.GetInteger ("Введитецелоечисло: ")

Здесь переменной iReturn присваивается целое число, введенное пользователем в командную строку. Такой метод применяется для ввода коротких и простых данных: чисел, текста или объекта. Чтобы избежать появления нескольких приглашений в одной строке, используют константу vbCrLf в начале приглашения:

Prompt1 = vbCrLf & "Задайте центральную точку: "ПримерSub AddCircle ()Dim vPt As VariantDim dRadius As DoubleDim myCircle As AcadCirclevPt = ThisDrawing.Utility.GetPoint (, vbCrLf & "Введитеточкуцентра: ")dRadius = ThisDrawing.Utility.GetReal ("Введитерадиус: ")Set myCircle = ThisDrawing.ModelSpace.AddCircle (vPt, dRadius)End Sub

Приведем перечень встроенных методов, наиболее часто применяемых для получения данных от пользователя. Во всех случаях приглашение является необязательным параметром.

Метод Синтаксис Описание
GetEntity Объект. GetEntity (объект, указанная точка, приглашение) Пользователь указывает объект. Метод возвращает объект и указанную точку. Пример: ThisDrawing.Utility. GetEntity(getObj,basePnt, "Выделите объект")
GetInteger Возвращаемое значение = GetInteger (Приглашение) Допустимо любое целое число в диапазоне от -32768 до 32767. Пример: getInt = ThisDrawing.Utility.GetInteger ("Введите целое число")
GetPoint Возвращаемое значение = GetPoint (точка, приглашение) Возвращает значение типа variant (оно содержит трехэлементный массив чисел типа double). Пользователь может указать точку или ввести ее координаты. Если имеется необязательный параметр точка, то AutoCAD прорисовывает "резиновую линию" от заданной точки до текущей позиции указателя. Пример: getPnt = ThisDrawing.Utility. GetPoint (, "Задайте точку: ")
GetReal Возвращаемое значение = GetReal (Приглашение) Получает вещественное (положительное или отрицательное число). Пример: GetReal = ThisDrawing.Utility.GetReal ("Введите вещественное число")
GetString Возвращаемое значение = GetString (содержит_пробелы, приглашение) Получение строки. Булев параметр содержит_пробел определяет, может ли получаемая строка содержать пробелы. Если параметр равен TRUE, то строка может содержать пробелы, а пользователь должен нажать ENTER для окончания ввода. Если значение параметра равно FALSE, то сигналом окончания ввода может служить не только нажатие ENTER, но знак пробела

Задание 7.2

Создать процедуру, получающую информацию от пользователя

1. Создайте новый чертеж. Выберите команду Tools - Macro - VBA Manager. Щелкните по кнопке NEW, а затем по кнопке Visual Basic Editor.

2. Выберитекоманду Insert - Module, азатем Insert - Procedure. Наберите в модуле следующий текст:

3. Public Sub HappyFace()4. Dim prompt As String, prompt2 As String: Dim cen As Variant: Dim rad As Double5. Dim cir As AcadCircle: Dim arc As AcadArc: Dim pi As Double6. Dim dStart As Double 'начальныйугол7. Dim dEnd As Double 'конечныйугол8. pi = 3.14159. prompt = vbCrLf & "Задайте центральную точку: "10.prompt2 = vbCrLf & "Задайте радиус: "11.'получение центральной точки и радиуса от пользователя12.cen = ThisDrawing.Utility.GetPoint(, prompt)13.rad = ThisDrawing.Utility.GetDistance(cen, prompt2)14.Set cir = ThisDrawing.ModelSpace.AddCircle(cen, rad)15. 16.'рисуем улыбку17.dStart = 225 * pi / 180 'pi/180 - перевод в радианы18.dEnd = 315 * pi / 18019.Set arc = ThisDrawing.ModelSpace.AddArc(cen, rad / 2, dStart, dEnd)20. 21.'рисуем глаза22.cen(0) = cen(0) - rad / 4:cen(1) = cen(1) + rad / 423.Set cir = ThisDrawing.ModelSpace.AddCircle(cen, rad / 8)24.cen(0) = cen(0) + rad / 225.Set cir = ThisDrawing.ModelSpace.AddCircle(cen, rad / 8)26.End Sub

Сохраните проект как HappyFace. dvb в папке AutoCAD2007\Support. Вернитесь к чертежу и выберите команду Tools - Macro - Macros. В диалоговом окне выберите процедуру HappyFace и щелкните по кнопке Run. Ответьте на приглашения.

В основе приведенного примера лежит функция GetDistance. Благодаря ей пользователь может задать радиус с помощью мыши. Указанная ранее точка центра будет использована функцией GetDistance в качестве опорной. Кроме того, процедура выполняет преобразование градусов в радианы. Поэтому расположение глаз и губ будет соотноситься и с центром, и с радиусом.

Как и во всех языках программирования, в VBA существует развитая технология поиска ошибок. Простейший сеанс отладки сводится к установке точек прерывания.

1. Перейдите в редакторе в процедуру, где предполагается наличие ошибки.

2. Поместите курсор в первую выполняемую строку и нажмите F9 или выберите команду Debug - Toggle Breakpoint. В строку будет добавлена точка прерывания.

3. Выполните операторы по одному, нажимая клавишу F8. На каждом шаге просматривайте значения переменных. При помещении указателя мыши на переменные типов Integer, Double, и String в подсказке выводится их текущее значение.

4. Когда ошибка обнаружена, выберите команду Run - Reset и внесите исправления в код. При следующем запуске процедуры точка прерывания останется активной. Отключить ее можно нажатием клавиши F9. Нормальный запуск процедуры можно осуществить командой Run Sub, либо нажатием клавиши F5.

5. Если программа зависает в редакторе Visual Basic, то выйдите в окно AutoCAD и прервите выполнение команды нажатием клавиши ESC.

Упражнения

Пусть при открытии нового документа выполняется VBA-файл инициализации. Для этого нужно создать dvb -проект и сохранить его в своей папке. Автоматически загрузить проект в открывающийся чертеж можно несколькими способами:

· разместить проект в файле acad. dvb и поместить в одном из маршрутов файлов поддержки;

· добавить в один из файлов acad. lsp, acaddoc. lsp, acad.mnl команду загрузки

· (command "_vbaload" "MyAppication")· (vl-vbaload "MyAppication")

Для запуска процедуры следует добавить команду запуска процедуры

(command "_vbarun" "Модуль.Имя процедуры")

Выполните следующие действия:

1. В новом чертеже по команде Tools - Macro - VBA manager выгрузите все проекты.

2. Откройте редактор Visual Basic и вставьте модуль по команде Insert - Module.

3. Наберите в модуле процедуру HappyFace с предыдущей страницы.

4. Щелчкомпокнопке Save cохранитефайлкак c:\Program Files\AutoCAD 2010\Support\acad. dvb.

5. Проверьте, существует ли в этой папке файл acaddoc. lsp. Если такой файл есть, то откройте его в редакторе Visual LISP и добавьте строку

6. (command "_vbarun" "HappyFace")

Если файла acaddoc. lsp нет, то создайте его в редакторе Visul LISP.

· В программе AutoCAD щелчком по кнопке QNEW откройте новый документ. Процедура запустится автоматически и Вы сможете нарисовать Happy Face.

Ключевые термины

Проект - набор объектов, программных модулей, модулей классов и форм.

Объектно-ориентированное программирование - программирование, основанное на работе с объектами. Характеризуется механизмами инкапсуляции, полиморфизма и наследования.

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

Объект - логическое целое, включающее в себя данные и код для работы с данными. Характеризуется свойствами, методами и событиями.

Семейство - объект, содержащий несколько других объектов одного и того же типа.

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

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

События - действия пользователя (click) или программы (load), распознаваемые объектом. В качестве отклика на событие выполняется код созданной пользователем процедуры обработки события.

Краткие итоги

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

Вопросы

1. Что такое объект, его свойства и методы?

2. Почему VBA называется объектно-ориентированным языком?

3. В чем смысл иерархической структуры объектов AutoCAD?

4. Какие типы переменных определены в языке VBA?

5. Какова структура процедуры на языке VBA?

6. Назовите методы, применяемые для получения данных от пользователя.

Внимание! Если Вы увидите ошибку на нашем сайте, выделите её и нажмите Ctrl+Enter.

© Национальный Открытый Университет "ИНТУИТ", 2021 | www.intuit.ru


 

Национальный Открытый Университет "ИНТУИТ": www.intuit.ru

Валерий Пакулин


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

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

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

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



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

0.01 с.