Object arx для автокад что это
ObjectARX ® (расширение для среды выполнения AutoCAD) представляет собой среду программирования на компилируемом языке для разработки приложений AutoCAD, с помощью которых выполняется загрузка и запуск компилированных проектов в том же пространстве адресов, что и AutoCAD, что позволяет программам работать непосредственно с основными структурами данных и кодом AutoCAD.
Библиотеки ObjectARX используют преимущества открытой архитектуры AutoCAD и расширяют классы объектов и возможности AutoCAD благодаря прямому доступу к структурам баз данных AutoCAD, графической системе и ядру геометрических построений. Кроме того, можно создавать новые команды, которые будут использоваться аналогично встроенным командам.
Библиотеки ObjectARX можно использовать совместно с другими интерфейсами программирования AutoCAD, например AutoLISP или ActiveX, обеспечивая таким образом интеграцию различных интерфейсов программирования приложений.
Работа с приложениями ObjectARX
Для загрузки приложения ObjectARX служит параметр "Загрузить" команды ARX. После загрузки приложения все определенные в нем команды можно вызывать из командной строки.
Для размещения некоторых приложений ObjectARX требуется большой объем системной памяти. Поэтому после завершения использования каждого подобного приложения его можно выгрузить из памяти с помощью параметра "Выгрузить" команды ARX.
Приложения ObjectARX также можно загружать функцией arxload языка AutoLISP. Синтаксис функции arxload во многом идентичен синтаксису функции load , используемой для работы с AutoLISP-файлами. При успешной загрузке приложения ObjectARX функция arxload возвращает имя программы. Вызов функции arxload имеет следующий синтаксис:
Функция arxload имеет два аргумента имя_файла и при_ошибке . Как и у функции load , аргумент имя_файла является обязательным и должен представлять собой полный путь и имя файла загружаемого приложения ObjectARX. Аргумент при_ошибке является необязательным и при загрузке программ ObjectARX из командной строки, как правило, опускается. В следующем примере производится загрузка приложения ObjectARX myapp.arx.
Как и с AutoLISP-файлами, AutoCAD производит поиск указанного файла по библиотечному пути поиска. Для загрузки файла, находящегося вне папок, указанных в библиотечном пути, требуется задание полного пути к нему.
Примечание Для разделения имен папок при вводе пути следует использовать одну прямую косую черту (/) или две обратных косых черты (\\). Это связано с тем, что в AutoLISP символ обратной косой черты (\\) имеет специальное назначение.Попытка повторной загрузки уже находящегося в памяти приложения приводит к появлению ошибки. Перед использованием arxload следует с помощью функции arx проверить, нет ли приложения в списке уже загруженных.
Для выгрузки приложения с помощью AutoLISP служит функция arxunload . На следующем примере можно посмотреть, как производится выгрузка приложения myapp.
Использование функции arxunload приводит к выгрузке из памяти не только приложения, но и определенных в нем команд.
Автоматическая загрузка приложений ObjectARX
Некоторые приложения ObjectARX используют файл acad.rx, в котором содержится список программных ObjectARX-файлов, автоматически загружаемых при запуске AutoCAD.
Для создания и редактирования этого файла можно использовать любой текстовый редактор или текстовый процессор, который сохраняет тексты в формате ASCII. При необходимости этот файл можно изменять, удаляя неиспользуемые или добавляя нужные имена ObjectARX-приложений. Кроме того, перечень приложений для автоматической загрузки можно выбрать с помощью параметра ЗАГПРИЛ. В последнем случае редактирование файлов не требуется.
Так как в AutoCAD поиск файла acad.rx производится в порядке, заданном в стандартных библиотечных путях, в каждой папке с чертежами можно хранить свой файл acad.rx. Это позволяет загружать требуемый набор ObjectARX приложений для различных типов чертежей. Пусть, например, трехмерные чертежи хранятся в папке с именем AcadJobs/3d_dwgs. Если эта папка установлена текущей, в нее можно скопировать файл acad.rx и внести в него следующие изменения:
Если поместить новый файл acad.rx в папку AcadJobs/3d_dwgs, задать эту папку в качестве текущей и запустить AutoCAD, указанные программы ObjectARX загружаются и становятся доступными из командной строки AutoCAD. Поскольку исходный файл acad.rx остается в папке программных файлов AutoCAD, файл по умолчанию acad.rx будет загружен при запуске AutoCAD из другой папки, в которой отсутствует файл acad.rx.
С помощью функции arxload приложения ObjectARX можно загружать из MNL-файлов. Это позволяет при загрузке файла меню также загружать все необходимые ObjectARX-приложения, которые должны вызываться из данного меню.
Многие команды AutoCAD, содержащиеся в arx-модулях, можно загружать автоматически. См. раздел "Автозагрузка и запуск процедур AutoLISP".
Для отображения Справки для разработчиков следует щелкнуть на стрелке раскрывающегося списка, расположенной на панели инструментов "Инфоцентр" справа от кнопки "Справка". В появившемся меню выберите "Дополнительные ресурсы" "Справка для разработчиков".
ObjectARX (AutoCAD Runtime Extension) – это набор библиотек для разработки ARX-приложений в среде программирования Microsoft Visual C++. ARX-приложение работает в AutoCAD, как динамически связываемая библиотека (DLL) с файловым расширением .arx и имеет прямой доступ к графической базе данных AutoCAD. Важнейшая особенность ARX приложений заключается в том, что появилась возможность расширения AutoCAD не только за счет разработки новых команд, но также и за счет создания новых типов примитивов.
ObjectARX среда состоит из следующих групп классов и функций:
- AcRx (acad.lib, rxapi.lib, acrxlib) – классы для создания производных классов.
- AcEd (acad.lib, rxapi.lib, acedapi.lib, acrxlib) – классы для регистрации команд AutoCAD и для уведомления о событиях AutoCAD.
- AcDb (acad.lib, rxapi.lib, acdblib, acrx15.lib) – классы базы данных AutoCAD.
- AcGi (acad.lib, rxapi.lib, acgiapi.lib, acrxlib) – классы для создания графических объектов AutoCAD.
- AcGe (acad.lib, rxapi.lib, acgelib, acrx15.lib) – сервисные классы для общей линейной алгебры и геометрического объекта.
Рисунок AutoCAD – коллекция графических объектов и внутренних конструкций типа таблиц идентификаторов и словарей, сохраненных в базе данных.
Примитив (Entity) имеет графическое представление в пределах рисунка AutoCAD – строки, круги, дуги, текст, solids, области(регионы), сплайны, и эллипсы. Пользователь может видеть его на экране и управлять им.
Таблицы идентификаторов – контейнеры для сохранения объектов базы данных. Примеры таблиц идентификаторов – таблица слоев (AcDbLayerTable) и таблица блоков (AcDbBlockTable). Все примитивы AutoCAD принадлежат записям таблицы блоков.
Словари обеспечивают более универсальный контейнер для сохранения объектов, чем таблицы идентификаторов. Словарь может содержать любой объект типа AcDbObject или его подкласса. Когда создается новый рисунок AutoCAD создает словарь называемый Named Object Dictionary. Этот словарь может просматриваться как “оглавление” для всех словарей, связанных с базой данных. Вы можете создавать новые словари в пределах Named Object Dictionary.
ObjectARX обеспечивает ваше приложение доступом к этим структурам базы данных. Кроме того, Вы можете создавать новую базу данных объектов для вашего приложения.
Множество баз данных (рисунков) могут быть загружены в одном сеансе AutoCAD. Каждый объект в сеансе имеет метку и ID. Метка уникально идентифицирует объект в пределах специфической базы данных. ID уникально идентифицирует объект во всех базах данных, загруженных в одно время. ID сохраняется только в течение сеанса редактирования, а метка сохраняется с рисунком. В отличие от ID объекта, метка может быть неуникальна, когда множество баз данных загружены в сеансе AutoCAD. Через ID Вы можете получить указатель на фактический объект базы данных для обеспечения исполнения операций с ним.
Чтобы быть пригодной для использования, база данных должна иметь, по крайней мере, следующий набор объектов: таблицу блоков; таблицу слоев; таблицу типов линий.
Таблица блоков первоначально содержит три записи: MODEL_SPACE, и два пространства листа, называемые PAPER_SPACE и PAPER_SPACE0. Таблица слоев содержит одну запись – слой 0. Таблица типов линий содержит тип линии CONTINUES.
Предположим, что пользователь создает отрезок с параметрами (4,2 10,7) в пространстве MODEL_SPACE. В базе данных AutoCAD создает образец класса AcDbLine и затем сохраняет его в таблице блоков.
Следующий код создает объект Line и прибавляет его к таблице блоков пространства модели:
Сначала получаем таблицу блоков для текущего рисунка. Затем открываем в пространстве MODEL_SPACE запись таблицы блоков и прибавляем объект к таблице, затем закрываем таблицу и объект.
Теперь, предположим, что пользователь создает окружность с параметрами ((9,3) 2). Снова AutoCAD создает образец соответствующего объекта (AcDbCircle) и прибавляет его к пространству модели.
Следующий код создает окружность и прибавляет ее к таблице блоков в пространстве модели:
Затем, пользователь создает слой mylayer, AutoCAD создает новую запись таблицы слоя и добавляет ее в таблицу слоев.
Следующий код получает таблицу идентификаторов слоя от базы данных и создает новую запись таблицы слоя ASDK_MYLAYER:
Наконец, группируем все объекты вместе (group 3,2 9,3). AutoCAD создает новую группу и прибавляет ее к словарю GROUP который содержится в объектном словаре имен (Named Object Dictionary). Новая группа содержит список ID объектов, которые составляют группу.
Cледующий код создает группу pGroup из объектов Line и Circle в методах createLine () и createCircle (), и помещает группу в словарь. Обратите внимание, как словарь открывается для записи, изменяется, и затем явно закрывается.
Все примеры кода иллюстрируют протокол для открытия и закрытия объектов, который Вы будете должны соблюсти всякий раз, когда Вы работаете с объектами резидента-базы. Этот протокол гарантирует, что объекты находятся физически в памяти, когда к ним обращаются. Прежде, чем Вы предполагаете изменять объект, Вы должны открыть его. Функции имеют параметр, который определяет, открываете ли Вы объект для чтения, записи или уведомления. В то время как объект открыт для записи, Вы можете изменять его. Когда закончите, Вы должны явно закрыть объект. Ниже приведен типовой код для изменения цвета объекта:
Для каждой версии AutoCAD выпускается соответствующая версия пакета ObjectARX . При этом для разработки ARX приложений для разных версий AutoCAD требуются строго определенные версии Visual Studio. Ниже приводится список значений параметра Platform Toolset, который должен быть установлен в свойствах проекта приложения:
В Visual Studio создайте пустой Win32 проект для DLL с именем First и установите свойства проекта в соответствии с рисунками.
initApp – функция вызывается, когда приложение загружается;В приложении (см. файл Source.cpp) вначале подключаются ObjetARX основные файлы: aced.h (определенные редактором услуги) и rxregsvc.h (для сервисных ARX функций). Затем объявляются три функции:
unloadApp – функция вызывается, когда приложение выгружается;
helloWorld – функция, которая обеспечивает печать “Hello World!”.
Далее определяется функция initApp. Эта функция регистрирует новую команду в системе команд AutoCAD. Информацию относительно acedRegCmds макроса и addCommand () метода (AcEdCommandStack класса), можно получить из ObjectARX справки.
Первый аргумент addCommand () – название группы команд (в нашем случае в группу включена только одна команда). Второй аргумент – глобальное имя команды. Третий аргумент – местное имя для той же самой команды. Четвертый аргумент – флаг команды (определяется прозрачная команда – может быть вызвана, когда другая команда активна). Последний аргумент – указатель на вызываемую нашей командой функцию.
После этого в коде программы определяется функция helloWorld. В теле данной функции используется функция acutPrintf, которая является эквивалентом LISP-функции printf.
Так как наше приложение очень простое (оно не определяет объекты, на которые AutoCAD и другие приложения ссылаются) мы можем без опасений определять его незамкнутым. Это позволяет выгружать наше приложение с помощью функции unloadApp. Также по умолчанию, ObjectARX приложения не используют MDI (обратитесь к справке для детальной информации по проблемам MDI). Для регистрации MDI в приложении используется глобальная функция acrxRegisterAppMDIAware.
Чтобы AutoCAD смог получить доступ к функции acrxEntryPoint необходимо экспортировать её. Для этого определяется файл с расширением .def. Все ObjectARX приложения должны экспортировать, по крайней мере, две функции: acrxEntryPoint и acrxGetApiVersion (см. файл Source.def).
Ниже приводится приложение, которое демонстрирует итерацию таблицы типов полилинии. Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текстовку из файла 2_tbliter_dg.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Запустите команду ITERATE.
Ниже приводится приложение, которое демонстрирует итерацию по вершинам примитива AcDb2dPolyline. При этом реализуется открытие и закрытие объектов – полилинии и ее вершин.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текстовку из файла 3_pliniter_dg.txt.
Для тестирования приложения выполните следующие шаги:
- Установите системную переменную PLINETYPE=0.
- Создайте полилинию.
- Выгрузите предыдущую и загрузите обновленную библиотеку First.arx.
- Запустите команду ITERATE.
Ниже приводится приложение, которое демонстрирует создание и добавление записи в таблицу слоев.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текстовку из файла 4_tablerec_dg.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Запустите команду ADDLAYER и раскройте диалоговое окно “Диспетчер свойств слоев”.
Ниже приводится приложение, которое демонстрирует создание и добавление объекта XRecord в словарь объектов и возможность просмотра этого объекта из словаря объектов.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текстовку из файла 5_XRecord.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Запустите команды ASDK_CREATE и ASDK_LISTXREC.
Ниже приводится приложение, которое демонстрирует создание и добавление объекта XRecord в словарь расширения выбранного пользователем объекта.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текст из файла 6_extension dictionaries.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Нарисуйте любой примитив, например, окружность. Запустите команду CREATE и укажите на нарисованный примитив. При этом будет создан словарь расширений и в нем будет размещена запись о выбранном примитиве. Запустите команду LISTXREC, укажите на нарисованный примитив, При этом будет напечатана запись о выбранном примитиве из словаря расширений.
Ниже приводится приложение, которое демонстрирует создание mesh объекта с ячейками сети различного цвета. В приложении создается класс, производный от класса AcDbEntity, в нем переопределяются виртуальные функции.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текст из файла 7_ASDKMAKEMESH.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Запустите команду ASDKMAKEMESH.
Ниже приводится приложение, которое демонстрирует использование AcDbGroup протокола.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текст из файла 8_ASDK_GROUPTEST.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Выполните чертеж из нескольких примитивов, включая отрезки. Запустите команду GROUPTST. На запрос команды выберите набор объектов, который включает, по крайней мере, один отрезок. Из выбранного набора отрезки должны выделиться красным цветом.
ObjectARX — это большой набор библиотек, предназначенный для разработки приложений для AutoCAD в среде программирования Microsoft Visual C++. Сам AutoCAD разработан с использованием ObjectARX.
ObjectARX общедоступен и его можно скачать с сайта Autodesk.
Кроме того, по этому же адресу можно скачать обширную документацию по SDK.
Внимание! Необходимо использовать одинаковые версии ObjectARX и Autocad! Совместимость работы библиотеки одной версии с Autocad другой версии не гарантируется. Так что при изменении версии используемого Autocad необходимо перекомпилировать Вашу программу с новыми библиотеками! Кроме того, советую обратить внимание на совместимость различных версий ObjectARX и MS VS! Все описанные ниже примеры написаны для Autocad 2009, соответственно используется ObjectARX 2009, MS Visual Studio 2008.
2. Возможности ObjectARX
Набор библиотек ObjectARX представляет разработчику огромный набор инструментов как для работы чертежами, так и с окнами Autocad.
Подробнее о ObjectArx можно почитать в документации (в папке ObjectARX\docs\), так же в составе документации по ObjectARX есть примеры (папка \ObjectARX\samples\).
3. Примеры
Ниже в данной статье будет рассмотрено несколько примеров работы с Autocad и по каждому примеру будут даны небольшие комментарии.
Для просмотра результата, необходимо в Autocad вызвать команду «netload» (без кавычек), загрузить получившуюся в результате компиляции dll-сборку и вызвать имя новой команды (addEntity и addBlock соответственно, регистр роли не играет).
3.1. Добавление новых примитивов в существующий чертеж
Данный пример иллюстрирует основы добавления примитивов на чертеж, работы с их свойствами, работы с базой данных чертежа, добавления нового примитива в чертеж. После запуска команды получим в точке 0,0 симпатичную окружность синего цвета.
2. Создание блока и изменение его свойств
Пример немного посложнее: создадим новый блок и разместим его на чертеже. Для этого добавим новую функцию:
Данный пример иллюстрирует процесс создания более сложных объектов — блоков. Процесс создания блоков следующий:
1) создаем определение блока (как элемент таблицы BlockTable) и добавляем его в таблицу блоков (не забываем проверить корректность имени блока);
2) создаем и добавляем в определение блока примитивы и определения атрибутов блока;
3) создаем экземпляр блока (BlockReference) и добавляем его в базу данных того пространства, которое нас интересует (в примере — пространство модели);
4) задаем значения атрибутов.
Злоключение
На этом поспешу закругляться. Всем спасибо за прочтение статьи, и напоминаю: с радостью рассмотрю все замечания, указание ошибок и просто критические комментарии!
Так же прошу в комментариях указать, есть ли смысл писать далее об этой теме и интересует ли эта тема кого-нибудь.
Решил рассказать о своем опыте работы с AutoCAD. Может быть, кому-то это поможет – ну или хотя бы интересным покажется.
Предыстория
Началось все достаточно просто: в очередной раз почувствовав острую нехватку денег, я решил, что пора бы уже начать их где-нибудь разыскивать. И вот после пары недель поиска на «Фрилансим» обнаружилась вакансия разработчика для создания программы, взаимодействующей с AutoCAD.
Скажу сразу: до того дня общаться с AutoCAD мне не доводилось. Однако объявление содержало в себе фразу «Опыт работы не требуется», которая наполнила мою душу надеждой. Я связался с разместившим вакансию человеком и получил тестовое задание.
Для пробы предлагалось создать на чертеже пару объектов, а также вывести текст. Несколько дней я искал информацию об API и пытался подружиться с непривычной программой. В конце концов фигуры были нарисованы, текст выведен, а тестовое задание отправлено на проверку. И через несколько дней я неожиданно узнал, что принят! Чудеса, да и только.
1. Подготовка необходимых инструментов
1.1. Собственно AutoCAD
Тут все понятно. Качайте с официального сайта Autodesk, ставьте, 30 дней наслаждайтесь прекрасным инструментом. Потом узнайте цену покупки и повесьтесь. Для разработчиков действует специальная программа ADN , по которой можно получать девелоперские лицензии на продукты Autodesk. Стоимость базовой версии подписки, как указано на сайте, составляет от 700 долларов в год.
1.2. ObjectARX SDK – набор библиотек, необходимых для работы с AutoCAD
Последние три-четыре версии библиотек можно бесплатно скачать тут после регистрации. Более ранние придется поискать – скажем, тут. На всякий случай продублирую список прямо здесь – не такой уж он и длинный:
ссылки для загрузки ObjectARX SDK для версий AutoCAD 2000 – 2011Версия SDK и ссылка для загрузки | Совместимость с версиями AutoCAD |
---|---|
2011 | 2011, 2012 |
2010 | 2010, 2011, 2012 |
2009 | 2009 |
2008 x86 | 2008, 2009 x86 |
2008 x64 | 2008, 2009 x64 |
2007 | 2007, 2008, 2009 x86 |
2006 | 2006 |
2005 | 2005, 2006 |
2004 | 2004, 2005, 2006 |
2002 | 2002 |
2000i | 2000i, 2002 |
2000 | 2000, 2000i, 2002 |
R14 | R14 |
Лично меня в свое время очень заинтересовал вопрос обратной совместимости ObjectARX. Как-то раз заказчик спросил: «А с какими версиями AutoCAD сможет работать программа?», и мне пришлось изрядно времени потратить на поиски ответа. В целом, ответ звучит так: «Autodesk поддерживает обратную совместимость в течение трех лет ». Какие версии совместимы между собой, можно посмотреть под спойлером выше.
Пока задачи перекомпилировать программу с другими библиотеками у меня не возникало. Думаю, что это хорошо: перспектива создавать отдельную версию продукта для других выпусков AutoCAD не радует совершенно.
1.3. MS Visual Studio 2013 Express
Великолепная IDE! Больше про нее и говорить-то нечего. Ссылок для скачивания масса – например, вот.
Можно, конечно, использовать и более ранние версии. Я начинал работу над проектом в MS Visual Studio 2010, но потом решил перейти на более современный выпуск.
1.4. Поисковик, усидчивость, здравый смысл
- нет привычных всплывающих подсказок о назначении класса, свойства или метода;
- нет подробной справки.
В конце этой статьи приведен список ресурсов, на которых можно позадавать вопросы и, если повезет, получить на них ответы.
2. Создание проекта библиотеки
Вкратце продублирую основные этапы:
2.1. Создать проект «Библиотека классов» («Class Library»)
Эти DLL-файлы находятся в папке с именем inc-<наименование_архитектуры>. Так, в моем случае я добавляю ссылки на библиотеки из папки C:\ObjectARX 2010\inc-win32.
у меня дома установлена 32-разрядная ОС, у заказчика – 64-разрядная. Пока серьезных проблем с совместимостью не возникало. Но однажды я все же напоролся на то, что у меня функция возвращала Int32 , а у заказчика – Int64 . Линковщик ОЧЕНЬ расстраивался. Нужно иметь эту особенность в виду.Первое знакомство с API у меня заключалось в лихорадочных попытках скомпилировать хоть какой-нибудь из примеров, щедро разбросанных по Сети. И что сλка характерно, компилироваться они упорно не хотели, ругаясь на неизвестные пространства имен и классы. В попытках собрать свой первый проект я с горя включил в него чуть ли не все DLL-файлы, которые шли с ObjectARX. Плохой способ – так делать не надо.
Ну, это вопрос не ко мне. Я только могу сказать, что в начале примеров обычно идет перечисление используемых пространств имен – скажем, так:
То, что начинается со слова «Autodesk», – это и есть те дроиды пространства имен, которые мы ищем. Теперь осталось разыскать контейнеры, которые их содержат. Исчерпывающего перечня сопоставлений я найти не смог, поэтому все проверялось методом научного тыка. Если есть более правильный способ, было бы интересно его узнать…
А пока – вот список DLL-файлов, которые я использую в проекте, и содержащихся в них пространств имен:
Теперь в любом месте этого файла можно вместо Autodesk.AutoCAD.ApplicationServices.Application писать acadApp .
Есть смысл провернуть такую операцию с наиболее часто употребляемыми классами. Непременно так делайте, код будет компактнее и понятнее. Цинизм данного совета заключается в том, что к тому моменту, когда вы наконец поймете, какие же классы являются у вас наиболее часто употребляемыми, что-то менять будет уже сильно лень.
2.3. Написать код плагина
Все очень просто. Вначале мы указываем необходимые пространства имен. Нам потребуются два.
Таким образом, всего необходимо добавить три ссылки:
UPD. 09.04.2018. Важное дополнение от lasteran: В новых версиях (предположительно начиная с AutoCAD 2013) класс CommandMethod содержится не в AcDBMgd.dll, а в AcCoreMgd.dll, так что придётся добавить ссылку ещё и на эту библиотеку. Учтите это, если работаете с новой версией!
Затем мы объявляем класс Commands . Именно он и будет «отправной точкой» плагина. Наш класс унаследован от интерфейса IExtensionApplication , поэтому в нем могут быть реализованы методы Initialize и Terminate . Первый из них автоматически выполняется при загрузке плагина, второй – при выгрузке.
AutoCAD не предоставляет разработчику возможность выгрузить плагин после того, как он будет загружен. Поэтому реально метод Terminate будет вызываться только в одном случае – при закрытии самого AutoCAD.
Почитать поподробнее про методы Initialize и Terminate можно тут (rus) и там (англ.).
Чтобы «превратить» созданный метод в команду AutoCAD, применяется атрибут CommandMethod . В скобках после него указывается имя создаваемой команды, которое можно будет использовать непосредственно в среде AutoCAD.
После сборки этого проекта у нас получится готовый к употреблению плагин.
2.4. Загрузить созданный плагин
Нужно запустить AutoCAD и выполнить команду «NETLOAD»:
Затем в открывшемся окне указать путь к файлу плагина:
Если при загрузке плагина произошла критическая ошибка, она будет выведена в консоль AutoCAD:
Теперь, когда плагин загружен, можно выполнить нашу тестовую команду:
… и увидеть результат:
Работает. Теперь можно закрывать AutoCAD.
2.5. Отладить плагин (при необходимости)
Процедура запуска плагина для отладки очень хорошо расписана в этом посте Tepliuk.
Читайте также: