Макросы vba в автокаде что это

Программирование на VBA

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

Введение. Обзор команд. Объектная модель

Введение

Интерфейс AutoCAD ActiveX/VBA дает некотoрые преимущества по сравнению с другими методами создания приложений AutoCAD :

  1. Высокая скорость выполнения процесса, так как в отличие от AutoLISP -приложений выполнение команд происходит внутри процесса;
  2. Простота использования, обусловленная простотой языка программирования;
  3. Большие возможности межпрограмного обмена, так как VBA и ActiveX разрабатывались для взаимодействия с другими Windows -приложениями.
Понятие внедренных и глобальных проектов VBA

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

Загрузка существующего проекта

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

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

Проект может состоять из различных компонентов:

  • объекты;
  • формы;
  • стандартные модули;
  • модули класса;
  • ссылки.

Добавить компонент можно через меню Insert , компоненты так же можно импортировать из файлов ( .frm, . bas , .cls ).

Обзор команд VBA AutoCAD
  • VBAIDE — открывает окно VBA IDE , позволяющее редактировать, запускать и отлаживать программы.
  • VBALOAD — загружает проект.
  • VBARUN — запускает макрос на выполнение.
  • VBAUNLOAD — выгружает проект, освобождая память.
  • VBAMAN — показывает окно менеджера VBA .
  • VBASTMT — позволяет выполнить команду VBA в командной строке AutoCAD .
Основные понятия объектной модели AutoCAD

Все объекты 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 , видимые на рисунке:

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

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

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

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

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

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

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

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

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

Объект 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 :

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

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

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

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

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

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

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

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

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

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

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

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

Понятие родительского объекта

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

Библиотеки типов

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

Получение первого примитива из базы данных рисунка
Применение variant в методах и свойствах

Для передачи массива данных AutoCAD использует тип Variant который может принимать данные любого типа за исключением строк фиксированной длины и типов данных, определяемых пользователем. Может также принимать значения Empty, Error, Nothing, NULL . Чтобы узнать какой именно тип данных хранятся в переменной типа Variant , нужно обратиться к функции VarType или TypeName .

Тип данных Variant используется для передачи массива данных из/в AutoCAD ActiveX Automation . В AutoCAD VBA -входные массивы автоматически преобразуются в тип Variant . Однако c выходными массивами все не так просто. Метод CreateTypedArray преобразует массив в Variant , содержащий «смесь» из Integer, Double и т.д. Эту «смесь» можно передать в любой метод или любое свойство AutoCAD , которые принимают массив чисел как Variant .

В примере преобразуются три массива координат сплайна с передачей их методу AddSpline .

Интерпретация variant-массивов

Передаваемая AutoCAD ActiveX Automation информация массива возвращается как тип Variant , если типы данных элементов массива известны. Иначе применяем функции VarType Typename . Для перебора элементов массива удобен метод For Each . Пример вычисления расстояния между двумя точками введенными пользователем:

Использование других языков программирования

Чтобы использовать приведенные примеры не в VBA а в VB следует, во-первых, сослаться на библиотеку типов, во-вторых заменить все ссылки ThisDrawing Для этого определить переменную для приложения AutoCAD (myApp) и для активного документа ( myDoc ). Если AutoCAD запущен, метод GetObject возвращает объект AutoCAD Application . Если AutoCAD не запущен, то вызывается обработчик ошибок. Затем метод CreateObject пытается создать объект AutoCAD Application , как в следующем примере:

Здесь уже используем acadDoc -переменную для ссылки на текущий рисунок AutoCAD . Если запущены несколько сеансов, AutoCAD -функция GetObject возвращает первое вхождение из Windows Running Object Table (ROT) .

Следующий пример демонстрирует создание линии в VB и VBA

Управление окружением AutoCAD

Открытие, сохранение и закрытие чертежа

Коллекция Documents и объект Document обеспечивают доступ к файловым функциям. Для этого следует использовать один из методов Add, Close, Save, SaveAs, Import, Export . Пример открытия рисунка:

Автоматизация рутинных операций между Excel и AutoCAD при помощи VBA

Уже не первый год я встречаю на профильных форумах мнение, что VBA для AutoCAD отмирает, и AutoDesk не будет его включать в следующих релизах в дистрибутив, и вообще, истинные падаваны пользуются lisp, C# и прочим, но только не VBA.

Я инженер-проектировщик ОВиК, не программист. И не хочу, да и некогда, вникать в серьезное программирование. Чаще всего появляется ситуация, что нужно как-то автоматизировать рутину здесь и сейчас. На помощь приходит простой язык VBA.

Далее я покажу, как можно без особых забот сделать самому то, за что серьезные ребята берут не плохие денежки. А именно перенос данных из Excel в AutoCAD и обратно. Заинтересованных прошу под кат.

Программировать будем на стороне Excel — мне так проще. Для подключения нужно войти в режим разработчика: Alt+F8 Либо можно открыть вкладку «разработчик» из настроек ленты.

В окне разработчика VBA входим в верхнее меню: Tools/References. В этом окне нужно поставить галочку на вашей версии AutoCAD

В моем случае это AutoCAD 2014 Type Library. Далее нужно в левом окне создать в вашей книге модуль, как на скриншоте (Module)

И в модуль вставляем нижеприведенный код:

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

Код обновления текста по хэндлу — написан ниже: ‘получаем хэндл из ячейки, в которую мы записали кодом выше.

entHandle = ActiveCell.Offset(0, 3).Value ‘получили наш блок по хэндлу
Set blockObj = acadDoc.HandleToObject(entHandle)

А дальше делаем всё то же самое, что и выше.

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

Как видите, кода минимум, однако на больших объектах мне экономит по несколько часов работы. И снижается риск ошибки. Т.к. обычно это выглядит следующим образом у проектировщиков — открываются два окна на разных экранах, и или вручную, или через буфер обмена начинается заполнение выносок или блоков на чертеже.

Опять же чем хорош VBA — что он всегда под рукой 🙂 Excel-то основной инструмент у инженера.

Macros (VBA for AutoCAD)

AutoCAD Scripting

VBA stands for Visual Basic for Applications. It is a custom version of the Visual Basic programming language that has powered AutoCAD Macros since the mid-2000s. This programming interface of AutoCAD will let you,

  • Create and Execute Macros (explained in the next section). Almost everything that the user can do in AutoCAD from the user interface can be done by writing code in VBA for AutoCAD.
  • Integrate AutoCAD with other applications such as Microsoft Excel, Word, PowerPoint, Outlook, Notepad etc.

What is a Macro ?

Macros are codes written in VBA (Visual Basic for Applications) which helps to reduce the manual effort required for a job. Macros save your time and headaches by automating common, repetitive tasks. They reduce the possibility of human error that increases with many, repetitive keystrokes and tasks. The most important feature of an AutoCAD macro is, it can be saved for future use, shared among multiple users.

In a layman’s language, a macro is a recording of your routine steps in AutoCAD that you can replay using a single button

The best part is You don’t have to be a programmer or know Visual Basic Applications (VBA) to use Macros. You just need to copy the codes shared here and hit the run button to execute them. Save the file as DVB file for future use.

How to use codes shared here?

  • Step 1: Copy the Code shared here.
  • Step 2: Click on Tools Tab in the Menu bar of AutoCAD.

  • Click on Macros, then Visual Basic Editor. ALT + F11 is the Shortcut for Visual Basic Editor.
  • Step 3: Right click on the tree view and Insert a Module.
  • Step 4: Paste the Code given here into a module.
  • Step 5: Close the editor and Click on Macros in Developer Tab. You will get a dialogue box with the list of Macros ready for execution. Click on Run button to execute the macro.

Ready to use Macros

Create Text in AutoCAD Drawing
Extract X, Y, Z Coordinates of Points in an AutoCAD Drawing
Extract X, Y, Z Coordinates of Blocks in an AutoCAD Drawing
Extract details of Text Objects in an AutoCAD Drawing
Extract Coordinates of 2D Polyline (LW Polyline)
Extract Area of Polygons and Polylines
Extract Area of Circles
Extract Coordinates of a 3D Polyline

Things to remember while using Macros

  • VBA is no longer installed by default in AutoCAD. To download VBA pack for AutoCAD, visit https://www.autodesk.com/vba-download.
  • We cannot Undo an action performed using Macro. Make sure that you have a backup of the data before executing the macro.
  • For future use the AutoCAD macro as DVB file.
  • Always fill in the description of the macro when creating one. This will help you understand your own work if you have to revisit it weeks or months later.
Join online Course on AutoCAD VBA Programming

Programming in AutoCAD Programming in AutoCAD

Макросы vba в автокаде что это

Вы слышали что AutoCAD R14 и 2000 содержат новый опциональный язык программирования — VBA (Visual BASIC for Applications). Но как только Вы загружаете его, Вы поражаетесь огромному количеству окон и опций меню, не совсем соответсвующим вашим представлениям о новом языке программирования. Некоторые специалисты в AutoLISP или других языках программирования. Однако я ручаюсь, что VBA не настолько сложен, как кажется. Когда вы закончите читать это руководство, Вы будете знакомы с VBA и его средой разработки. Вы также создадите простое VBA-приложение. Ну что, готовы? Давайте начинать.

Откройте VBA IDE (Integrated Development Environment). Из меню AutoCAD Tools, выберите Macros|Visual Basic Editor.

Изучение интерфейса VBA

Прграммирование на VBA очень отличается от программировнаия на AutoLISP, и одним из самых больших отличий является среда программирования. AutoLISP не имеет встроенной среды программирования — вы должны использовать текстовый редактор, что бы создавать и редактировать код. Когда приходит время отладки, вы ограничены установкой команды печати в вашем коде для отображения текущего состояния программы и переменных. Существуют программы, которые позволяют сделать этот процесс более легким, но их нужно приобретать отдельно.

VBA, с другой стороны, идет с всеми этими функциями, которые являются встроенные. VBA IDE включает редактор кода, конструктор форм, и отладчик в одном пакете. Из меню AutoCAD Tools, выберите Macros|Visual Basic Editor. Когда отобразиться VBA IDE, Вы увидите массив меню, кнопок и окон.

Сначала найдите окно с названием. Это Обозреватель проектов Project Explorer (справа). Подобно как Windows Explorer отображает все файлы и каталоги на вашем жестком диске и помогает вам находить и работать со специфическими файлами, Project Explorer отображает все формы и модули с кодом в вашем проекте и помогает вам находить и работать со специфическими формами или модулями.

Вы увидете три папки: AutoCAD Objects, Forms, и Modules. Когда вы добавляете форму или модуль к вашему проекту, VBA добавляет их к соответствующей папке.

В AutoCAD 2000, папка AutoCAD objects содержит объект ThisDrawing, который автоматически присоединяется к AutoCAD.

Все перечисленные окна помогают вам работать с формами. Формы — ваш основной интерфейс с пользователем. Там, где вы использовали диалоговые окна в программе на AutoLISP, вы используете формы в VBA.

В дополнении, в любое время вы можете спросить у пользователя более чем две или три части информации, поскольку формы воспринимаются быстрее чем сообщения в командной строке. Мы используем формы, что бы позволить пользователю решить, какую информацию отображать.

Оформление внешнего вида программы на VBA

Откройте меню Insert menu и выберите UserForm. Появяться два новых окна. Первое, называемое Project-UserForm1 (UserForm), это конструктор форм. Вы должны использовать его для графического конструирования форм. Второе окно, называемое Toolbox, содержит различные объекты, которые вы можете добавить к форме.

Прежде всего, посмотрите на новое имя формы: UserForm1. Каждый VBA-проект, каждая форма и модуль внутри проекта, и каждый объект и каждый объект в каждой форме имеет свое имя. Когда вы начинаете проект, добавляете новую форму к проекту, или добавляете новый объект к форме, VBA создает имя по умолчанию. Я думаю, что вы будите изменять эти имена на другие, что нибудь значащие для вас. Нажмите правой кнопкой мыши на Project в Project Explorer и выберите Project Properties из всплывающего меню. Измените имя проекта на VbaDemo и нажмите на OK.

Прежде всего, найдите окно с названием Properties (справа). Я хочу Вам напомнить, большинство объектов имеют свойства, которые определяют внешний вид объекта. Окно window позволяет вам легко устанавливать эти свойства. Прямо сейчас, падающее меню вверху окна должно отображать UserForm1 UserForm. Падающее меню содержит каждый объект, который вы расположили на форме. Ниже падающего меню находится длинный список свойств формы: заголовок, высота, вершина и много других. Левая сторона перечисляет каждое свойство, а правая показывает значение каждого свойства. Найдите свойство Name и измините его на MainWin. Заметьте, что Project Explorer обновляет имя формы.

Теперь, найдите свойство Caption и установите его в VBA Demo. Посмотрите заголовок формы в конструкторе форм после того как вы изменили его — оно измениться автоматически. Если вы когда-либо разрабатывали диалоговые окна используя AutoCAD DCL, вы должны оценить, насколько просто создавать формы в VBA.

Теперь вы готовы углубиться в Toolbox (ниже слева) и спроектировать свою собственную форму. Чтобы добавить управление к вашей форме, кликните на иконке в панели инструментов Control, а затем кликните на форме. Если Вы не уверены, какой вид управления представляет определенная кнопка в пaнели инструментов Control, подведите курсор мыши на несколько секунд к иконке, и тогда отобразиться описание того, что собой представляет данная иконка. Верхняя левая точка иконки расположиться в той точке, на которую вы укажете в форме. Вы можете изменить размер иконки управления перемещая любой из его углов или граней, точно так же как Вы мог бы изменять размеры Проводника Windows.

Вы можете также установить его свойста Top, Left, Height, и Width в окне свойств (Properties). Дале добавте две командные кнопки к форме. Измените имя первой кнопки на SayHello и ее заголовок на Say Hello, а затем измените имя второй кнопки на AskQuestion и ее заголовок на Ask a Question. Ваша первая форма должна быть похожа на ту, которая показана на рисунке 5.

Работа с пользователем.

Теперь, когда интерфейс с пользователем завершен, вам нужно добавить немного кода за сценой. VBA в AutoCAD R14.01 и R2000 имеет встроенную связь с AutoCAD, в отличие от R14, где нужно вручную подключать VBA к AutoCAD.

Я знаю, это не имеет смысла В конце концов, вы всегда запускаете внутри AutoCAD и вы никогда не должны были это делать с AutoLISP! Но VBA не специфическая для AutoCAD среда. Одно VBA-приложение может управлять любым количеством поддерживающих VBA приложений.

К примеру, вы можете использовать VBA для того, что бы сформировать перечень материалов, извлекая атрибуты из вашего чертежа, и соформировать затем таблицу в Excel. Вы так же можете использовать AutoCAD VBA среду что бы создавать приложения, которые не связаны с AutoCAD. Как всегда, добавление гибкости означает добавление работы, к счастью, эта работа не слишком напряжена.

Прежде всего, кликните правой кнопкой на форме и выберите View Code из всплывающего меню. Это откроет редактор кода. Хотя на первый взгляд редактор кода похож на обыкновенный текстовый редактор, на самом деле он — намного большее.

Посмотрите на два падающих меню в верхней части редактора. Падающее меню Objects слева — это перечень всех объектов, которые вы расположили в форме. Падающее меню Events справа — это перечень каждого события для вашего текущего объекта. Когда вы выбираете объект, редактор кода автоматически добавлет подпрограмму обработки событие по умолчанию для этого объекта. Когда вы выбираете событие, редактор автоматически добавляет подпрограммку поддержки этого события вместе с любыми требуемые аргументами.

По мере того как Вы набираете код, редактор делает много работы для Вас. Если Вы ссылаетесь на стандартную для VBA процедуру, редактор отображает подсказку которая перечисляет стандартный для данной процедуры синтаксис. По мере того как вы перемещаетесь со строки на строку, редактор подсвечивет определенным цветом ключевые слова, коментарии, и так же проверяет каждую строку на синтаксические ошибки. В дополнении, вы можете перемещаться к странице со справкой, просто переместив курсор к месту вызова метода и затем нажав F1 Хотя эта деятельность может казаться навязчивой сначала, вскоре Вы найдете это чрезвычайно полезным. Я настолько привык к этому, что, когда я изменяю старый AutoLISP-код, мне необходимо некоторое время, что бы привыкнуть что код не окрашивается и не проверяется тут же.

Я уверен что Вы стремитесь видеть все это в действии. Выберите General из падающего меню Objects и Declarations из падающего меню Events, и затем добавьте следующие переменные для образования связи:

Далее выберите объект UserForm и его событие Initialize. Событие — это специальный тип метода, который запускается когда что-нибудь случается в объекте. В этом случае, событие Initialize включает отображение формы. Добавьте следующий код:

‘On Error Resume Next’ говорит VBA переместиться на следующую инструкцию всякий раз, когда произойдет ошибка. без этой строки приложение будет остановлено и отобразиться диалоговое окно с сообщением об ошибке.

Вызов GetObject осуществляет попытку соединиться с выполняемы сеансом AutoCAD. Если это невозможно , происходит ошибка. Таким образом, немедленно после попытки, ваше приложение должно проверить, было ли это успешно. Если нет, необходимо дать знать об этом пользователю, а затем выгрузить форму. Процесс выгрузки формы автоматически завершает приложение.

Также, как ваше приложение нуждается в помощи при соединении с AutoCAD, оно должно сообщить о том, когда оно разорвет связь с AutoCAD. Выберите событие Terminate в объекте UserForm и наберите:

Это освободит соединение.

Если вы используете AutoCAD 14.01 или 2000, вы можете удалять весь код что вы набрали. Как я упомянул, Вы имеете встроенный объект ThisDrawing который представляет текущий чертеж. Он имеет свойство Application которое вы можете использовать для вызова любых методов объекта Application.

Получение ответа

После того как вы подключились к AutoCAD, вам необходимо добавить немного кода к вашему приложению что бы оно занало, что делать, когда пользователь что-то делает. Сделайте двойной щелчек мыши на кнопке SayHello в вашей форме. Обратите внимание что ваш редактор кода перемещается к событию Click кнопки. Это событие по умолчанию для управления кнопкой. Если вы желаете немного другое событие, Вы можете просто выбрать его из правого падающего списка.

Когда пользователь нажимает на кнопку SayHello, VBA0-программа должна отобразить окном сообщений, с надписью «Hello!». VBA имеет метод, который достаточно соответствует этому — MsgBox, который только это и делает. Добавьте следующий код к событию по нажатию (Click) для SayHello:

Как минимум, вы дадите для MsgBox сообщение для отображения, но этот метод может больше, если ему дать больше информации. К примеру, он может задать вопрос пользователю и сообщить его вам. Выберите AskQuestion из меню Object в редакторе кода; редактор снова предположит что вам нужно событие Click. Добавьте следующий код:

Как и в предыдущем случае, первый аргумент для MsgBox — сообщение для отображенияy. The Второй аргумент сообщает MsgBox что бы оно отобразило кнопки Yes и No прежде чем кнопку OK. Третий аргумент сообщает MsgBox как озаглавить диалог.

Когда вы укажите MsgBox отобразить кнопки Yes и No, вы можете проверить код возврата что бы определить, какую кнопку нажал пользователь. Если возвращаемое значение эквивалентно встроенной константе vbYes, пользователь нажал кнопку Yes. И как вы можете догадаться, нажатие кнопки No будет возвращать значение vbNo.

Готовы видеть результаты ваших усилий? Запустите программу на выполнение выбрав Run из меню Run. Ваша форма отобразиться в окне AutoCAD, и выступающие кнопки будут настаивать на ответе. Немного поотвечайте на вопросы, а затем возвращайтесь, когда вы утомитесь отвечать на вопросы.

Ваше приложение прочти закончено, но оно не содержит одной важной детали. Приложение запускается из среды разработки VBA, но как оно будет загружаться внутри AutoCAD? Никакие силы не заставят без этой детали запуститься приложению из командной строки AutoCAD. Что бы это сделать, вам необходим метод-помощник. Откройте в VBA меню Insert и выберите Module. Измените имя модуля на AppStuff, и введите следующий код в редакторе:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *