Как загрузить vba в автокад
Имитировать ввод команд в командную строку с возможностью передачи параметров команде позволяет метод SendCommand . Пробел в данной строке эквивалентен нажатию Enter . Вызов данного метода без аргументов не допускается.
Следующий пример создает окружность с центром (2,2,0) и радиусом 4.
Обратите внимание на пробел в конце каждой строки.
Если не открыт ни один документ
Несмотря на то, что Autocad всегда стартует с пустым или открытым документом существует возможность закрыть все документы, при этом главное меню сократится до 4-х пунктов ( File, View, Window, Help ), а также пропадет командная строка. Интерфейс ActiveX в данном случае позволяет выполнять только следующие действия
- Открыть документ
- Создать документ
- Импортировать документ
- Выйти из Autocad
Эти действия доступны для всей коллекции Documents , кроме того методы и свойства данной коллекции ограничены набором методов и свойств объекта Application . Свойство Count коллекции Documents открыт ли хоть один документ .If Documents.Count > 0 Then открыт как минимум один документ. Здесь важно также заметить, что объект ThisDrawing не определен, если не открыт ни один документ, поэтому попытка выполнить макрос с ThisDrawing приведет к ошибке периода выполнения. Вместо этого используй функцию GetObject .
Импорт файлов других форматов
Метод Import позволяет импортировать файлы форматов DXF , SAT, BMP, PostScript . Он принимает три параметра: имя файла, точку вставки и фактор масштабирования.
Экспорт в другие форматы
Метод Export поддерживает следующие форматы: WMF, SAT, EPS, DXF , DWF , BMP . Он принимает три параметра: имя создаваемого файла, тип создаваемого файла и набор экспортируемых объектов. При экспорте в WMF, SAT или BMP должен существовать непустой набор. В EPS и DXF экспортируется весь рисунок.
Пример эскпорта-импорта в DXF
Создание и редактирование примитивов и наборов объектов
Создание различных объектов возможно как в пространстве листа, так и в пространстве модели , кроме того объекты могут входить в состав блоков. Обычно для создания объекта используется метод Add . После того как объект создан можно изменять его свойства слой, цвет, тип линий и т.д.
Создание объектов
Несмотря, на то что Autocad > может создать один и тот же объект разными путями, ActiveX автоматизация допускает только один метод на объект. Например, для создания окружности можно указать 1. центр и радиус 2. две точки, задающие диаметр, 3. три точки определяющие окружность, 4. два тангенса и радиус. Однако ActiveX позволят воспользоваться только первым из них.
Примечание: метод VB и VBA CreateObject или Dim позволяют создать только объект Autocad Application , все остальные объекты создаются методами Add и Add[Object] .
Определение объекта-контейнера
Объекты создаются в коллекциях ModelSpace, PaperSpace или объекте Block . На объект можно сослаться непосредственно или через объектную переменную. Непосредственная ссылка включает всю иерархию:
Для ссылки на объект через объектную переменную следует создать переменную типа AcadModelSpace или AcadPaperSpace . И установить ссылку на нужное свойство активного документа. В следующем примере две объектные переменные ссылаются на Model Space и PaperSpace соответственно:
В следующей строке в пространство модели добавляется линия через объектную переменную:
Создание линий
Возможно создание различных типов линий - проcто линия, мультилиния , мультилиния с дуговыми сегментами. Обычно для обрисовки линий задаются координаты вершин. Тип линии по умолчанию непрерывный. Методы для создания линий:
- AddLine - создает линию по двум точкам;
- AddLightWeightPolyline - создает двумерную полилинию ;
- AddMLine - создает мультилинию;
- AddPolyLine - создает двумерную или трехмерную полилинию .
Стандартные линии и мультилини создаются в плоскости XY полилинии создаются в Object Coordinat System . Пример создания полилини :
Создание криволинейных объектов
Все подобные объекты (эллипсы, сплайны, дуги, окружности) строятся в плоскости XY мировой системы координат. Для их создания используется один из следующих методов:
- AddArc - дуга через центр, радиус, начальная точка и конечный угол;
- AddCircle - окружность через центр и радиус;
- Addellipse - эллипс через центр, точку на главной оси и радиус кривизны;
- AddSpline - кривая.
Пример создания сплайна
Более подробная информация о сплайнах в AutoCAD ActiveX and VBA Reference .
Создание точки
Стиль создаваемой точки и ее размер можно указать в относительных единицах к размеру экрана или в абсолютных. Управление видом точек делается через системные переменные PDMODE, PDSIZE . Значения переменной PDMODE равные 0,2,3,4 представляют разные формы точки, значение равное 1 - означает невидимую точку. Добавление 32, 64 или 96 означает вокруг точки фигуру (окружность, квадрат, окружность вписанную в квадрат). Значение переменной PDSIZE равное нулю задает размер точки 5% от размера экрана, а любые положительные значения - абсолютный размер . Отрицательные же значения интерпретируются как процент от размера видового экрана . Размер всех точек пересчитывается при регенерации, т.е. изменение PDMODE, PDSIZE сразу не заметно. Для установки значений системных переменных используется метод SetVariable , ниже приведен пример его применения:
Создание сплошной заливки
Возможно создание треугольной и прямоугольной области со сплошной заливкой. Наиболее быстрый способ - создание области при выключенной системной переменной FILLMODE и затем включение ее. Последовательность второй и четвертой точки области определяют способ заливки (слева направо и сверху вниз - если 1,2,3,4 то прямоугольная, если 1,2,4,3 то треугольная). Первые две точки задают сторону полигона. Для создания области со сплошной заливкой есть метод AddSolid . Пример объекта с заливкой.
Создание регионов
Регион представляет двухмерную замкнутую фигуру, границы которой не имеют внутренних пересечений. Может состоять из комбинации линий, окружностей, дуг, эллипсов, эллиптических дуг, сплайнов и некоторых других объектов. Весь объект должен лежать в одной плоскости. Трехмерная полилиния может быть преобразована в регион путем "взрыва". К региону применима штриховка и тень, у него есть свойства - площадь и момент инерции. Создав фигуры можно выбрав их создать регион, используя метод AddRegion. AutoCAD преобразует замкнутые двумерные и трехмерные планарные полилинии в отдельные регионы, а полилинии , линии и кривые образуют замкнутые планарные петли. Если более двух кривых разделяют конечную точку результирующий регион может быть присужден. ( arbitrary ) используйте Variant для хранения вновь создаваемых массивов регионов. Для подсчета количества созданных объектов Region используйте UBound(objRegions) - LBound(objRegions) + 1 , где objRegions переменная Variant содержащая массив возвращенный методом AddRegion . Пример простого региона из одной окружности:
Создание составных регионов
Путем вычитания, комбинирования и нахождения пересечений регионов или 3-мерных заливок можно создать составной регион, для чего применяется метод Boolean . При вычитании регионов этот метод применяется к первому из них. Пример:
Для объединения регионов вызывайте метод Boolean и вводите константу acUnion , для операции вместо acSubtraction , а для пересечения acIntersection .
Создание штриховок
Штриховки заполняют указанную область рисунка образцом. При ее создании сначала следует создать объект Hatch методом AddHatch . Ассоциированная штриховка привязана к определенным границам и меняется вместе с ними. Привязка может быть задана только при создании штриховки, после этого штриховку можно отвязать, но нельзя привязать снова. Чтобы сделать штриховку ассоциированной следует использовать параметр Associativity=TRUE для метода AddHatch , а для разрыва связи Associativity=FALSE .
Назначение имени и типа штриховке
В AutoCAD есть сплошная заливка и более 15 штриховок применяемых в производстве. Штриховка подчеркивает отельную часть рисунка или области. Поддерживаются внешние библиотеки с образцами штриховок. Для указания уникального образца следует давать полное имя и тип штриховки. Тип штриховки указывает местоположение образцов штриховки. acHatchPatternTypePredefined (в acad.pat ), acHatchPatternTypeUserDefined (используя текущий тип линий), acHatchPatternTypeCustomDefined (из другого pat -файла).
Задание границ штриховки
Как только создан объект Hatch можно добавлять границы штриховки. Они могут задаваться комбинацией линий, дуг, окружностей, двумерных полилиний , эллипсов, сплайнов и регионов. Первая граница должна быть внешней границей штриховки, (метод AppendOuterLoop ). Внутренние границы задаются методом AppendInnerLoop. Они определяют незаштрихованные "островки" внутри штрихованной области. Пример штриховки.
Редактирование объектов
Для изменения существующего объекта применяют методы и свойства соответствующих объектов, для видимых объектов нужно еще применять метод Update .
Работа с именованными объектами и их переименование
Именованные объекты это блоки, слои, группы, размерные стили и т.п. Чистка именованных объектов на которые в текущем рисунке нет ссылок осуществляется методом ThisDrawing.PurgeAll .
По мере усложнения чертежа может возникать необходимость давать объектам другие более осмысленные имена. Переименовать можно почти все, кроме, например, 0 слоя и типа линий continuose . Имя может быть длиной до 255 символов (буквы, цифры, спецсимволы кроме тех которые используются самим AutoCADом < >/ \ " : ; ? * | = ' и запятая). Пример переименования
Выбор объектов
Набор представляет собой группу объектов AutoCAD указанных для обработки как одно целое. Набор может состоять из объектов разных слоев, разных цветов и т.п. Создание набора двухступенчатый процесс. Сначала создается набор и включается в коллекцию SelectionSets . Затем идет работа с объектами, входящими в набор. Для создания именованного набора используем метод Add .
Добавление объектов в набор
Добавление объектов в набор может осуществляется одним из следующих методов:
- AddItem - добавляет один или более объектов в набор;
- Select - выбирает объекты и помещает в активный набор, можно выбрать все объекты, выбрать секущей или прямоугольной рамкой, последний созданный, из последнего созданного набора, окном или полигоном;
- SelectAtPoint - выбрать объекты проходящие через данную точку;
- SelectByPolygon - выбрать объекты полигоном;
- SelectOnScreen - запросить у пользователя указания объектов.
Фильтрация набора
Фильтрация набора объектов (например по цвету, типу объекта) осуществляется через список фильтров. При этом фильтрация по цвету различает только цвета явно назначенные объектам, но не унаследованные от слоя (!). Для применения механизма фильтрации используется тип фильтра и данные фильтра, которые сортируются. AutoCAD ActiveX автоматизация использует DXF -коды групп для указания типа фильтров. Наиболее часто используемые фильтры перечислены ниже.
Примеры различных фильтров
Удаление объектов из набора
При выборе всех объектов в набор может быть необходимость исключить объекты, это делается следующими методами:
- RemoveItems - удаляет один или более объект из набора, но не из рисунка;
- Clear - очищает набор, не удаляя его;
- Erase - удаляет объекты из рисунка, очищая набор;
- Delete - удаляет набор, не трогая объекты.
Копирование объектов
Объекты рисунка могут быть копированы, в том числе на определенное смещение от оригинала. Можно так же создать зеркальное отображение объекта относительно заданной линии. Объекты могут размножаться через прямоугольный или округлый шаблон. Нельзя только использовaть эти методы одновременно с перебором элементов коллекции, сначала следует завершить перебор. Для копирования единичного объекта метод Copy позволяет создать его дубликат по тем же координатам.
Копирование нескольких объектов или в другой документ
Для этого есть метод CopyObjects или копирование через создание массива а потом методом Copy . Для копирования объектов набора, перебором его элементы засылаются в массив. Перебирая элементы массива, каждый копируется по отдельности в другой массив. Пример копирования нескольких:
Смещение объектов
Смещение объекта создает его копию на определенном расстоянии от оригинала. Смещению могут подвергаться дуги, окружности, эллипсы, линии, полилинии , сплайны и некоторые другие. Метод Offset принимает единственный параметр - это дистанция на которую следует сместить объект. Если его значение отрицательное, AutoCAD пытается построить уменьшенный объект (для окружностей), если это не имеет смысла, то объект строится с координатами меньшими текущего. Для многих объектов результат операции - новая кривая, которая может не быть подобной оригиналу. Например при смещении эллипса образуется сплайн. В некоторых случаях может потребоваться чтобы смещение создало несколько кривых, поэтому метод может создавать массив объектов. Пример смещения полилини
Отражение объекта
Данный метод создает зеркальную копию объекта относительно координатной оси или заданной линии. Действует на любые объекты. В отличие от команды Mirror метод Mirror не удаляет оригинальный объект, для удаления следует воспользоваться методом Erase . Принимает два параметра - координаты точек принадлежащих линии относительно которой будет отражаться объект.
Для управления свойствами отражения текстовых объектов используется системная переменная MIRRTEXT . Значение по умолчанию 1, говорит о том, что текст отражается как и другие объекты, а значение 0 приводит к тому, что текст не меняется при отражении объекта его содержащего. Пример отражения полилини по оси:
Создание массива объектов
Объект могут быть помещены в полярный или прямоугольный массив . Для полярного массива можно менять количество объектов и угол, для прямоугольного - число строк и столбцов, а так же расстояние между ними.
Создание полярного массива
Метод ArrayPolar выбранного объекта требует количество объектов, угол и центральную точку массива. Число объектов должно быть не меньше 1, угол в радианах не равный нулю (положительный угол против часовой стрелки), центр массива - переменная типа Variant , содержащая массив координат Double. AutoCAD определяет расстояние от центральной точки массива до референс-точки исходного объекта. Референс-точка зависит от типа объекта. (Для окружности и дуги это центр, для блока - точка вставки, для текста - начальная точка и т.д) Данный метод не поддерживает вращение в процессе копирования в отличие от команды ARRAY . Пример создания полярного массива
Создание прямоугольного массива
Метод ArrayRectangular позволяет создать двумерный или трехмерный прямоугольный массив . Он требует число строк, столбцов, расстояния между ними, при создании трехмерного массива требуется так же указать количество уровней и расстояния между ними. Если задать одну строку, то следует указать несколько столбцов и наоборот. Предполагается что оригинальный объект расположен в левом нижнем углу массива, а сам массив создается вверх и вправо. Если нужно вниз и влево, задавай отрицательные расстояния между строками и столбцами.
AutoCAD строит прямоугольный массив вдоль базовой линии, определенной текущим углом привязки. По умолчанию равен нулю, столбцы и строки ортогональны в соответствии с расположением осей XY . Для изменения этого угла есть свойство SnapRotationAngle . Пример трехмерного прямоугольного массива
Загрузка проекта VBA осуществляется командой VBALOAD. После загрузки модули и макросы проекта становятся доступными в диалоговом окне "Макросы".
В отличие от приложений Microsoft, которые используют для хранения проектов, макросов и программ VBA непосредственно документы, AutoCAD для этих целей использует специальные файлы с расширением .dvb. Это обеспечивает возможность взаимодействия интерфейсов VBA с AutoCAD аналогично тому, как это делается в AutoLISP и ObjectARX. Благодаря тому, что проекты VBA хранятся в отдельных файлах, в одном сеансе AutoCAD приложения VBA могут открывать и закрывать различные чертежи.
Примечание Двоичный формат файлов проектов VBA в AutoCAD не совместим с форматом проектов Visual Basic 6 (файлами VBP). Однако из интегрированной среды разработки IDE (integrated development environment) VBA можно экспортировать и импортировать формы, модули и классы, используя для этого команды ИМПОРТ и ЭКСПОРТ.
Загрузка проекта VBA осуществляется командой VBALOAD . После загрузки модули и макросы проекта становятся доступными в диалоговом окне "Макросы". Для запуска модуля VBA служит команда VBARUN . Если не загружено ни одного проекта VBA, данные опции недоступны. При выводе процедур в списке с именами макросов используется следующий синтаксис:
В диалоговом окне "Макросы" перечнем отображаемых в списке модулей можно управлять с помощью списка "Макросы из".
Запуск макрокоманды VBA из командной строки
С помощью команды -VBARUN можно запустить макрокоманду из командной строки. Это позволяет запускать макрокоманды VBA из командной строки, сценариев и других сред программирования AutoCAD. Единственным аргументом команды должно быть имя модуля и макроса VBA, отделенные точкой ( модуль . макрос ). Образец вызова выглядит следующим образом:
Необходимость использования синтаксиса вида модуль . макрос обусловлена тем, что различные модули могут содержать макросы с одинаковыми именами.
Здесь вы можете скачать документацию и программы для САПР AutoCAD, PCAD, 3DS, Inventor, Pro/E, Solidworks и других CAD CAM CAE EDA GIS
Урок 2. Начало работы с VBA
Установка VBA в AutoCAD
Вы слышали что 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 включает отображение формы. Добавьте следующий код:
Вызов GetObject осуществляет попытку соединиться с выполняемы сеансом AutoCAD. Если это невозможно , происходит ошибка. Таким образом, немедленно после попытки, ваше приложение должно проверить, было ли это успешно. Если нет, необходимо дать знать об этом пользователю, а затем выгрузить форму. Процесс выгрузки формы автоматически завершает приложение.
Также, как ваше приложение нуждается в помощи при соединении с AutoCAD, оно должно сообщить о том, когда оно разорвет связь с AutoCAD. Выберите событие Terminate в объекте UserForm и наберите:
Это освободит соединение.
Если вы используете AutoCAD 14.01 или 2000, вы можете удалять весь код что вы набрали. Как я упомянул, Вы имеете встроенный объект ThisDrawing который представляет текущий чертеж. Он имеет свойство Application которое вы можете использовать для вызова любых методов объекта Application.
Получение ответа
После того как вы подключились к AutoCAD, вам необходимо добавить немного кода к вашему приложению что бы оно занало, что делать, когда пользователь что-то делает. Сделайте двойной щелчек мыши на кнопке SayHello в вашей форме. Обратите внимание что ваш редактор кода перемещается к событию Click кнопки. Это событие по умолчанию для управления кнопкой. Если вы желаете немного другое событие, Вы можете просто выбрать его из правого падающего списка.
Когда вы укажите MsgBox отобразить кнопки Yes и No, вы можете проверить код возврата что бы определить, какую кнопку нажал пользователь. Если возвращаемое значение эквивалентно встроенной константе vbYes, пользователь нажал кнопку Yes. И как вы можете догадаться, нажатие кнопки No будет возвращать значение vbNo.
Готовы видеть результаты ваших усилий? Запустите программу на выполнение выбрав Run из меню Run. Ваша форма отобразиться в окне AutoCAD, и выступающие кнопки будут настаивать на ответе. Немного поотвечайте на вопросы, а затем возвращайтесь, когда вы утомитесь отвечать на вопросы.
Ваше приложение прочти закончено, но оно не содержит одной важной детали. Приложение запускается из среды разработки VBA, но как оно будет загружаться внутри AutoCAD? Никакие силы не заставят без этой детали запуститься приложению из командной строки AutoCAD. Что бы это сделать, вам необходим метод-помощник. Откройте в VBA меню Insert и выберите Module. Измените имя модуля на AppStuff, и введите следующий код в редакторе:
Сохраните ваш VBA-проект, затем переключитесь в командную строку AutoCAD и наберите vbarun AppStuff.VbaDemo. Ваша форма отобразилась на экране! Перейдем к следующему уроку.
Аннотация: Язык VBA предоставляет широкие возможности программирования в среде AutoCAD. В лекции показана возможность управления окружением AutoCAD и даны технологии создания и редактирования слоев и объектов. Разбирается работа с текстом и размерностями, с блоками и листами, с трехмерными поверхностями и сплошными 3D объектами.
Цель лекции: изучить принципы и конкретные технологии программирования на VBA .
Введение. Обзор команд. Объектная модель
Введение
Интерфейс AutoCAD ActiveX/VBA дает некотoрые преимущества по сравнению с другими методами создания приложений AutoCAD :
- Высокая скорость выполнения процесса, так как в отличие от AutoLISP -приложений выполнение команд происходит внутри процесса;
- Простота использования, обусловленная простотой языка программирования;
- Большие возможности межпрограмного обмена, так как 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 а через него к большинству других объектов и коллекций:
В двух последних расположены объекты AutoCAD , видимые на рисунке:
Доступ к иерархии объектов. Коллекции, свойства и методы
Связь VBA с активным чертежом обеспечивается посредством объекта ThisDrawing . С его помощью можно получить немедленный доступ ко всем свойствам и методам объекта Document а также ко всем другим объектам в иерархии.
Когда используются глобальные проекты, ThisDrawing всегда ссылается на активный документ. При использовании внедренных проектов ThisDrawing всегда ссылается на документ, содержащий проект. Например, следующая строка кода в глобальном проекте сохраняет любой чертеж, который в данный момент активен:
Ссылка на объекты в иерархии объектов
Доступ к объекту можно получить непосредственно или через объектную переменную. Для непосредственной сслыки на объект достаточно указать полный путь к нему в иерархии. Например, следующий фрагмент кода добавляет линию в пространство модели:
Для доступа к объекту через объектную переменную поступаем следующим образом. Определяем переменную желаемого типа, после чего устанавливаем переменную так, чтобы она ссылалась на нужный объект. К примеру следующий код определит объектную переменную moSpace типа AcadModelSpace так, чтобы она ссылалась на текущее пространство модели :
В примере добавляем линию в пространство модели , используя эту переменную:
Корневой объект Application расположен в иерархии выше объекта Document . Выше показано, что объект ThisDrawing обеспечивает доступ к объекту Document . А у объекта Document есть свойство Application , которое и является ссылкой на объект Application . Пример обращения:
Коллекции объектов
Объект Collection - является предопределенным объектом содержащим все вхождения подобных объектов. Существуют следующие объекты коллекции:
Доступ к коллекции
Большинство коллекций доступны через объект 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 . Пример открытия рисунка:
Здесь вы можете скачать документацию и программы для САПР AutoCAD, PCAD, 3DS, Inventor, Pro/E, Solidworks и других CAD CAM CAE EDA GIS
Cоздание утилиты для AutoCAD 2000 с помощью VBA
С появлением AutoCAD 2000, VBA в AutoCAD достиг совершеннолетия. Новая версия избавилась от многих ограничений начальной реализации VBA в AutoCAD R14, и добавила реальные функциональные возможности непосредственно к AutoCAD.
Чтобы почуствовать, что Вы можете теперь делать с помощью VBA, эта статья, представляет простую утилиту MRU +. Эта утилита, показанная на рисунке 1, сохраняет список последних открытых чертежей, показывает Вам те, которые загружены в настоящее время, и позволяет Вам загружать и выгружать чертежы просто устанавливая галочку рядом с названием чертежа. Хотя это простая утилита, но MRU + демонстрирует многие из новых возможнстей VBA в AutoCAD, и должна помочь научить вас владеть средой VBA в AutoCAD.
- Впервые, AutoCAD имеет среду окружения MDI, позволяя Вам, открывать много чертежей в одно время. Каждый чертеж может содержать:
- Множество закладок, отображающих различные варианты размещения чертежа.
- Инструментальные средства для загрузки отдельных объектов и частей чертежей были по существу улучшены.
- Трехмерное вращение в реальном времени, улучшенное твердотельное моделирование, и более гибкие виды, делают работу с трехмерным объектами намного проще.
- Расширенная объектная модель впервые позволяет программам VBA, манипулировать меню и инструментальными панелями. VBA может также посылать команды непосредственно в командную строку AutoCAD.
- Модель событий для AutoCAD и его чертежей существенно улучшена.
- Вы можете открывать и сохранять файлы непосредственно из Интернет.
- Новые мастера делают печать намного более просто чем это было в предыдущих версиях.
Два типа проектов в VBA
- Извлекать внедренный проект из загруженного чертежа в глобальный проект
- Внедрять загруженный глобальный проект в любой открытый чертеж
- Создавать новый глобальный проект
- Сохранять глобальный проект под новым названием
- Загружать глобальный проект с жесткого диска
- Выгрузить глобальный проект из памяти
- Посмотреть макросы в любом или всех загруженных проектах
- Запустить Редактор Visual Basic
Рис. 2. Диалоговое окно VBA Managerпозволяет Вам манипулировать внедренными и глобальными проектами VBA.
Конечно, глобальный проект более предпочтителен для утилиты, разработанной, чтобы фиксировать информацию относительно множества чертежей. В случае MRU +, глобальный проект это фалй MRUPlus.dvb. Расширение "dvb" используется AutoCAD для глобальных проектов, сохраненных на диске.
Загрузка при запуске
AutoCAD 2000 автоматически не инициализирует VBA всякий раз, когда Вы его запускаете. Скорее, VBA загружается по требованию. Однако, имеются два способа когда Вы можете загружать и запускать код VBA при запуске. Во первых, Вы можете создавать глобальный проект VBA, с названием acad.dvb, и сохранять его в вашем каталоге AutoCAD. Любой проект с этим названием будет автоматически загружен при запуске AutoCAD. Далее, если это содержит макроc ( процедуру Sub ) с названием AcadStartup, эта макрокоманда будет автоматически выполняться, как только файл acad.dvb загружен.
Как вариант, Вы можете расположить команды AutoLisp в файле acad.lsp, который также должен быть в каталоге AutoCAD. Любая функция AutoLisp названая STARTUP в этом файле будет автоматически выполняться, когда файл загружен. Как вы будете видеть в этой статье, Autodesk сделала хорошую работу по созданию связи между старшим языком Lisp и более новым языком VBA, что бы стало возможно для кода Lisp, вызвать код VBA и наоборот.
Для приложения, хорошая мысль, модифицировать файл acad.lsp, чтобы загружать приложение при запуске. Большинство пользователей AutoCAD знакомы с изменением этого файла и с языком Autolisp, так что добавление строки кода, чтобы загрузить ваше приложение должно быть для них просто. Вы можете просто загружать приложение, или можете загружать приложение и запускать макрос из него в то же самое время.
Чтобы загрузить приложение, Вы можете использовать код Autolisp, чтобы вызвать команду AutoCAD vbaload:
Или, чтобы запустить процесс инициализации в приложении, Вы можете вызывать команду vbarun:
Аргумент команды vbarun может быть полностью квалифицирован в форме:
Если указанный файл не загружен, он будет сначала загружен, и затем будет выполнен макрос. По умолчанию, команды vbarun или vbaload загружают файлы только из главного каталога AutoCAD. Если ваша утилита сохранена в другом месте, вы будете должны указать полный путь и имя файла в аргументе. В этом случае, Вы нуждаетесь в "escape" из знаков наклонной черты влево, удваивая их. Например, это имело силу бы в файле acad.lsp:
Как часть своего загрузочного кода, MRU + добавляет себя к меню AutoCAD File, только выше встроенного списка последних использованных файлов. В предыдущих версиях AutoCAD, эта операция была полностью невозможна для кода VBA. Теперь новая ветвь объектной модели AutoCAD делает такие вещи тривиальными.
Рисунок 3 показывает новый объекты AutoCAD, доступные для манипулирования инструментальной панелью и меню. Объект MenuBar контролирует все меню, в настоящее время отображенные в главной строке меню AutoCAD. Вы можете вставилять и удалять меню, вызывая методы InsertInMenuBar и RemoveFromMenuBar объекта PopupMenu.
Объект PopupMenu представляет стандартное падающее меню, или меню вызываемое по правой кнопке мыши. Объект PopupMenuItem представляет единственный пункт меню.
Система MenuGroups содержит набор объектов MenuGroup. Каждый MenuGroup может содержать меню и панели инструментов. Вы можете загружать группы меню из файла на диске. После того, как вы загрузили группу меню, ее содержание станет доступным, чтобы загрузиться в MenuBar или сокращенные меню.
Система Toolbars содержит объекты Toolbar, каждый из которых представляет панель инструментов. Индивидуальные кнопки панели представлены объектами ToolbarItem.
Утилита MRU + делает самую простую возможную операцию с этими объектами: Она прибавляет пункт меню, который отображает интерфейс пользователя к файловому меню. Это делается одной строкой кода:
Этот код добавляет новый пункт к 20-й позиции (считая с нуля) системы PopupMenuItems на крайнем левом PopupMenu в установленному по умолчанию MenuBar (другими словами, к меню File). Второй аргумент - текст, который будет отображаться в меню, и третий аргумент - макрос меню AutoCAD, который вызывается, когда этот пункт меню выбран.
Использование макросов меню AutoCAD имеет почти тот же самый синтаксис как команды AutoCAD, но и имеет некоторые различия. Один из них - вызов команды vbarun, используя синтаксис подчеркивания и черты чтобы подавить показ диалогового окна, которое это обычно вызвало бы. Заметьте присутствие пробела после имени макроса VBA, для выполнения. В макросах меню, конечные пробелы интерпретируется как конец фрагмента входа. Без этого, название макрокоманды VBA было бы внесено в командную строку AutoCAD, но не выполненно.
Использование ThisDrawing
Хотя можно иметь несколько одновременно загруженных глобальных проектов VBA, они все используют единственный объект названный ThisDrawing. Этот объект представляет собой активный документ в интерфейсе пользователя AutoCAD, и имеет класс AcadDocument. (В отличие от многих других объектных моделей, в модели AutoCAD имена всех объектов начинаються с префикса "Acad", чтобы гарантировать однозначность в операциях). Если несколько проектов VBA включают обработчики для событий для объекта ThisDrawing, каждый из обработчиков событий вызывается по очереди.
Использование событий ThisDrawing просто. Каждый глобальный проект VBA, который Вы создаете автоматически, содержит пример объекта ThisDrawing который не может быть удален. В приложении MRU + событие ThisDrawing.BeginClose используется, чтобы сообщить главной форме, когда рисунок выгружается из пользовательского интерфейса. Это событие содержит минимум кода, чтобы вызвать метод public формы интерфейса пользователя, чтобы расположить соответствующий ListItem в ListView и не контролировать это.
Таблица ниже содержит списки событий, поддерживаемые ThisDrawing. Как Вы можете видеть, многие из этих событий - новые в AutoCAD. В частности события BeginShortcutMenu, BeginLisp, и Object позволяют осуществлять новые способы взаимодействия с другими языками программирования в AutoCAD.
Имя события | Новое | Исполняется когда: |
Activate | Да | Окно чертежа выбирается |
BeginClose | Да | Пользователь или программа пытается закрыть чертеж |
BeginCommand | Да | Запущена команда |
BeginDoubleClick | Да | Пользователь осуществляет двойной щелчек мышью на любом объекте чертежа |
BeginLisp | Нет | Lisp-выражение посылается на исполнение |
BeginPlot | Да | Начинается операция печати |
BeginRightClick | Да | Пользователей нажимает правую кнопку мыши на любом объекте в черетеже |
BeginSave | Да | Пользователь начинает сохранять чертеж |
BeginShortcutMenuCommand | Да | Пользователь выдает сокращенного меню коммандного режима |
BeginShortcutMenuDefault | Да | Пользователь выдает сокращенное меню по умолчанию |
BeginShortcutMenuEdit | Да | Пользователь выдает сокращенное меню EDIT |
BeginShortcutMenuGrip | Да | Пользователь выдает сокращенное меню GRIP |
BeginShortcutMenuOsnap | Да | Пользователь выдает сокращенное меню OSNAP |
Deactivate | Да | Окно чертежа становиться не активным |
EndCommand | Нет | Завершается выполнение команды |
EndLisp | Да | Завершается вычисление Lisp-выражения |
EndPlot | Да | Завершается операция печати |
EndSave | Да | Завершается операция записи |
EndShortcutMenu | Да | Любое сокращенное меню фактически появляется. |
LayoutSwitched | Да | Пользователь переключатеся на другой layout |
LispCancelled | Да | Выполнение lisp-выражения прервано |
ObjectAdded | Да | Любой объект добавлен к чертежу |
ObjectErased | Да | Любой объект удален из чертежа |
ObjectModified | Да | Любой объект модифицирован |
SelectionChanged | Да | Текущий набор выбора изменен |
WindowChanged | Да | Окно максимизируется или минимизируется |
WindowMovedOrResized | Да | Окно перемещается или изменяется его размер |
Зацепление объекта Application
Помимо наличия ThisDrawing, который представляет активный документ, утилита MRU + также должна контролировать события объекта AcadApplication (представляющего непосредственно AutoCAD) чтобы знать, когда новый рисунок был открыт. В отличие от объекта ThisDrawing, однако, глобальные VBA объекты не получают автоматически образец объекта AcadApplication. К счастью, Вы можете использовать в VBA ключевое слово WithEvents, чтобы создать ваш собственный. Последовательность событий, что использует MRU+, чтобы зацепить cобытие EndOpen объекта AcadApplication, который испольняется всякий раз, когда открывается новый рисунок, выделенный в следующих абзацах.
Файл acad.lsp, как Вы уже видели, содержит код вызова процедуры LoadMRUPlus в basMRUPlus. Наряду с другим загрузочным кодом, эта процедура устанавливает образец частного класса называемого CApp и устанавливает одно из его свойств:
Класс CApp существует исключительно как оболочка для объекта AcadApplication. Встроенный объект ThisDrawing содержит свойство Application что указывает на единственный образец объекта AcadApplication, что позволяет просто коду запуска находить это. Ниже показан код для класса CApp. Важным является здесь - то, что частная переменная типа AcadApplication объявлена WithEvents. Это специальное ключевое слово делает события AcadApplication доступными для кодирования в модули класса. Распечатка кода для утилиты MRU + в конце статьи.
События объекта AcadApplication полностью новые в AutoCAD 2000. В таблице ниже показан список новыех событий предмета AcadApplication.
Имя события | Когда исполняется |
AppActivate | AutoCAD получает фокус |
AppDeactivate | AutoCAD теряет фокус |
ARXLoaded | приложение ObjectARX загружается |
ARXUnloaded | приложение ObjectARX выгружается |
BeginCommand | Команда запущена из командной строки AutoCAD |
BeginFileDrop | Файл положен на рабочее пространство AutoCAD |
BeginLisp | Вычисляется Lisp-выражение |
BeginModal | Модальное диалоговое окно собирается отобразиться. |
BeginOpen | Чертеж собирается открыться |
BeginPlot | Чертеж отправляется на печать |
BeginQuit | Сессия AutoCAD собирается завершиться |
BeginSave | Документ отправле на сохранение |
EndCommand | Команда завершает исполнение |
EndLisp | Lisp-выражение вычислено |
EndModal | Модальный диалог отклонен. |
EndOpen | Чертеж открыт |
EndPlot | Чертеж напечатан |
EndSave | Чертеж сохранен |
LispCancelled | Вычисление Lisp-выражения прервано |
NewDrawing | Создан новый чертеж |
SysVarChanged | Изменено значение системной переменной |
WindowChanged | Окно минимизировано или максимизировано |
WindowMovedOrResized | Окно перемещено или изменен его размер |
С AutoCAD 2000, VBA в AutoCAD перестал быть являющийся интересным "доказательство концепции", и стал довольно полезным средством. Добавление структурированной объектной модели, способность загружать несколько VBA-проектов и выполнять код при загрузке, а так же интегрирование с Lisp, командной строкой, меню, и панелями инструментов - все это делает возможным писать полезные утилиты, объединенные со стандартным интерфейсом AutoCAD.
Хотя MRU + утилита, показанная здесь только как доказательство концепции, она демонстрирует все схемы, которые вы были бы должны делать с любой утилитой для AutoCAD. Autodesk вложил много усилия в создании VBA как первоклассной средой окружения для AutoCAD.
Читайте также: