Меню Рубрики

Установка плагина в автокаде

AutoCAD

Знания

Изучите основы и оттачивайте навыки для повышения эффективности работы в AutoCAD

Установка и удаление приложений подключаемого модуля

Автор:

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

Пакетный формат — это типовая структура папки, содержащая в имени расширение .bundle и XML-файл, который определяет поведение различных компонентов подключаемого модуля. При использовании пользовательских приложений BUNDLE упрощается разработка для нескольких операционных систем и версий продукта, так как параметры подключаемого модуля определяются в XML-файле пакета. Пакет BUNDLE можно использовать вместо создания сложных сценариев установки для развертывания подключаемого модуля.

Подключаемые модули каждого пакета загружаются в AutoCAD путем помещения в одну из папок ApplicationPlugins на локальном диске. Можно использовать три папки ApplicationPlugins.

Папка установки программы

Папка профилей всех пользователей

  • (ОС Windows XP) :\Documents and Settings\All Users\Application Data\Autodesk\ApplicationPlugins
  • (ОС Windows Vista или Windows 7) : \ProgramData\Autodesk\ApplicationPlugins

Папки профиля пользователя

  • (Windows XP) :\Documents and Settings\ \Application Data\Autodesk\ApplicationPlugins
  • (ОС Windows Vista или Windows 7) :\Users\ \AppData\Roaming\Autodesk\ApplicationPlugins

При запуске AutoCAD в папках ApplicationPlugins выполняется проверка наличия подключаемых модулей. Найденные пакеты автоматически регистрируются и загружаются в зависимости от XML-файла каждого пакета.

Установка пакетов подключаемых модулей

Комплект можно развернуть с помощью установщика (например, MSI) или путем ручного копирования структуры файлов и папок в папку ApplicationPlugins. Для загрузок AutoCAD Exchange Apps развертывание пакета выполняется с помощью установщика MSI.

Загрузка подключаемых модулей

Подключаемые модули по умолчанию автоматически регистрируются в AutoCAD, а также при установке нового подключаемого модуля в ходе текущего сеанса. Поведение загрузки подключаемого модуля определяется системной переменной APPAUTOLOAD. Если APPAUTOLOAD имеет значение 0, то подключаемые модули не загружаются (если не используется команда APPAUTOLOADER).

Удаление пакетов подключаемого модуля

Комплект можно удалить путем удаления соответствующей папки с расширением .bundle из папки ApplicationPlugins. Это можно выполнить путем удаления с помощью исходного установщика или ручного удаления папки .bundle.

Пример базовой структуры папок .bundle

Ниже приведен пример содержимого комплекта подключаемого модуля и его структуры на диске.

.bundle — это не файл, а имя папки с расширением BUNDLE. Ниже приведен пример подключаемого модуля, который содержит основной программный файл LSP и вспомогательный файл DWG. Подключаемый модуль называется OfficeSymbols. Структура его папок может выглядеть следующим образом (папки отображаются полужирным шрифтом):

источник

Программирование, настройка и администрирование CAD систем

Программирование, настройка и администрирование CAD систем

четверг, 14 ноября 2013 г.

О загрузке плагинов в AutoCAD

Данную заметку решил создать для того, чтобы давать не неё ссылку пользователям, когда у них вдруг возникнут проблемы с загрузкой в AutoCAD плагинов, написанных на AutoLISP, Visual LISP, VBA, C++ или .NET, поскольку процесс загрузки в последних версиях AutoCAD стал не только более безопасным, но и менее прозрачным для рядового обывателя.

Посредством Startup Suite вы можете добавить в автозагрузку плагины любого типа, кроме .NET. Чтобы воспользоваться Startup Suite, следует запустить команду _.APPLOAD и в открывшемся диалоговом окошке щёлкнуть по кнопке, над которой нарисован «чемоданчик». Откроется диалоговое окно Startup Suite, в котором можно добавлять или удалять в автозагрузку плагины.

Если совместно с плагином поставляется текстовый файл описания его установки (обычно это readme.txt), то внимательно прочитайте его — возможно для работы данного софта потребуется добавить очередную запись в группу Support Search File Path на вкладке Files диалогового окна Options. Хотя если разработчик софта изначально думал головой, а не пятой точкой, то таких изменений не понадобится.

Предыдущие два абзаца дают понять, что .NET приложения должны размещаться на локальных дисках вашего компьютера, для того, чтобы вы могли успешно пользоваться этим софтом. Однако достаточно ли этого для успешного запуска? Не совсем. Дело в том, что .NET файлы DLL и EXE могут быть заблокированными . Эту блокировку принудительно устанавливают различные программы, посредством которых происходит передача указанных файлов по сети. Например, нередко таким поведением «страдают» браузеры, почтовые клиенты, а так же Skype. Получив по сети исполняемый файл или библиотеку, написанные на .NET, обязательно проверьте их на предмет блокировки. Если файлы заблокированы — разблокируйте их .

Читайте также:  Установка батарейки в магнитолу

Информацию о том, как можно управлять автозагрузкой .NET плагинов посредством либо регистрации в реестре, либо загрузкой из LISP файлов, или посредством создания своего загрузчика плагинов можно почитать здесь.

Если вы пишете свой управляемый плагин и хотите, чтобы при его автоматической загрузке (при старте AutoCAD) происходили некоторые изменения в панелях Ribbon, то код выполнения этих изменений следует регистрировать на событие Application.Idle . По выполнению кода, не забудьте отписаться от обозначенного события.

4 комментария:

Здравствуйте, Алексей! Имеются отрезки (сети газопровода) их нужно переделать в блоки с атрибутами. Можно это автоматизировать? Сколько это стоит? Есть ещё элементы на чертеже которые, я думаю, можно автоматизировать. Но отрезки в первую очередь. Спасибо. Жду вашего ответа. gordeevyzel@googlemail.com

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

Как вариант, можете попробовать разместить объявление на форуме http://forum.dwg.ru/forumdisplay.php?f=33

Заодно просмотрите эту ветку http://forum.dwg.ru/forumdisplay.php?f=29
возможно, что нечто подобное уже решалось.

Привет, нужен твой совет. Я написал плагин для 2010 автокада на C#. На моем компьютере он отлично работает, а вот на других нет. Вызываю команду NETLOAD указываю DLL и ничего не происходит. Что делать?В Чем проблема? Спасибо!

Привет. Я не телепат. В данной статье обозначены возможные причины проблем. Убедись, что ты следуешь обозначенным условиям. Кроме того, удостоверься, что на целевых машинах присутствует та версия .NET Framework, которую использует твой плагин.

источник

Создание плагинов для AutoCAD с помощью .NET API (часть 1 – первые шаги)

Решил рассказать о своем опыте работы с AutoCAD. Может быть, кому-то это поможет – ну или хотя бы интересным покажется.

Предыстория

Началось все достаточно просто: в очередной раз почувствовав острую нехватку денег, я решил, что пора бы уже начать их где-нибудь разыскивать. И вот после пары недель поиска на «Фрилансим» обнаружилась вакансия разработчика для создания программы, взаимодействующей с AutoCAD.

Скажу сразу: до того дня общаться с AutoCAD мне не доводилось. Однако объявление содержало в себе фразу «Опыт работы не требуется», которая наполнила мою душу надеждой. Я связался с разместившим вакансию человеком и получил тестовое задание.

Для пробы предлагалось создать на чертеже пару объектов, а также вывести текст. Несколько дней я искал информацию об API и пытался подружиться с непривычной программой. В конце концов фигуры были нарисованы, текст выведен, а тестовое задание отправлено на проверку. И через несколько дней я неожиданно узнал, что принят! Чудеса, да и только.

В следующих абзацах – мои впечатления, синяки и шишки, мысли и советы (возможно, вредные). Разработка велась под AutoCAD 2010, в качестве IDE использовалась верная Visual Studio 2013 Express. Язык разработки – C#.

1. Подготовка необходимых инструментов

1.1. Собственно AutoCAD

Тут все понятно. Качайте с официального сайта Autodesk, ставьте, 30 дней наслаждайтесь прекрасным инструментом. Потом узнайте цену покупки и повесьтесь. Для разработчиков действует специальная программа ADN , по которой можно получать девелоперские лицензии на продукты Autodesk. Стоимость базовой версии подписки, как указано на сайте, составляет от 700 долларов в год.

1.2. ObjectARX SDK – набор библиотек, необходимых для работы с AutoCAD

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

Версия 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. Поисковик, усидчивость, здравый смысл

У меня был не такой большой опыт программирования – я привык решать простые задачи, для которых за глаза хватало средств самой платформы .NET. И первое мое знакомство с программированием под AutoCAD вышло не очень простым. Неприятной неожиданностью оказалось то, что у классов для работы с AutoCAD:

  • нет привычных всплывающих подсказок о назначении класса, свойства или метода;
  • нет подробной справки.

В итоге информацию я черпал из файлов помощи Object ARX (у меня они установлены в папку с именем C:\ObjectARX 2010\docs), а также из многочисленных форумов, блогов и сообществ разработчиков AutoCAD. Признаться, больше помогало последнее, чем первое. 🙂

В конце этой статьи приведен список ресурсов, на которых можно позадавать вопросы и, если повезет, получить на них ответы.

2. Создание проекта библиотеки

Первые шаги вполне внятно описаны здесь. Владеющие английским могут попробовать зайти еще и сюда. Правда, в материалах по последней ссылке упор сделан на Visual Basic, плюс нужно будет установить «AutoCAD .NET Wizard» – шаблон проекта для создания плагинов под AutoCAD. Люди знающие говорят, что этот шаблон сильно упрощает жизнь; я же никогда им не пользовался, поэтому скромно промолчу.

Вкратце продублирую основные этапы:

2.1. Создать проект «Библиотека классов» («Class Library»)

Если плагин предназначен для старой версии AutoCAD, то целесообразно сразу же задать в свойствах проекта версию .NET, которую будем использовать. Например, AutoCAD 2010 не может загружать плагины, созданные с использованием .NET Framework 4, поэтому я в качестве используемой версии указываю .NET Framework 3.5.

При понижении версии .NET Framework, используемой в проекте, могут появляться сообщения об ошибках. В моем случае Visual Studio ругается на отсутствие сборки «Microsoft.CSharp» – ее просто нужно исключить из ссылок (References).

2.2. Добавить ссылки на необходимые библиотеки AutoCAD .NET API

На этом пункте стоит остановиться чуть подробнее. AutoCAD .NET API включает в себя достаточно большое количество классов, которые разнесены по разным пространствам имен (namespaces). В свою очередь, эти пространства имен разнесены по нескольким контейнерам (проще говоря, DLL-файлам).

Эти DLL-файлы находятся в папке с именем inc- . Так, в моем случае я добавляю ссылки на библиотеки из папки C:\ObjectARX 2010\inc-win32.

Первое знакомство с API у меня заключалось в лихорадочных попытках скомпилировать хоть какой-нибудь из примеров, щедро разбросанных по Сети. И что сλка характерно, компилироваться они упорно не хотели, ругаясь на неизвестные пространства имен и классы. В попытках собрать свой первый проект я с горя включил в него чуть ли не все DLL-файлы, которые шли с ObjectARX. Плохой способ – так делать не надо.

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

То, что начинается со слова «Autodesk», – это и есть те дроиды пространства имен, которые мы ищем. Теперь осталось разыскать контейнеры, которые их содержат. Исчерпывающего перечня сопоставлений я найти не смог, поэтому все проверялось методом научного тыка. Если есть более правильный способ, было бы интересно его узнать…

А пока – вот список DLL-файлов, которые я использую в проекте, и содержащихся в них пространств имен:

Контейнер «AcMgd» (файл «AcMgd.dll»):

  • Autodesk.AutoCAD.ApplicationServices
  • Autodesk.AutoCAD.EditorInput
  • Autodesk.AutoCAD.GraphicsSystem
  • Autodesk.AutoCAD.Internal
  • Autodesk.AutoCAD.Internal.Calculator
  • Autodesk.AutoCAD.Internal.DatabaseServices
  • Autodesk.AutoCAD.Internal.Forms
  • Autodesk.AutoCAD.Internal.PreviousInput
  • Autodesk.AutoCAD.Internal.PropertyInspector
  • Autodesk.AutoCAD.Internal.Reactors
  • Autodesk.AutoCAD.Internal.Windows
  • Autodesk.AutoCAD.PlottingServices
  • Autodesk.AutoCAD.Publishing
  • Autodesk.AutoCAD.Runtime
  • Autodesk.AutoCAD.Windows
  • Autodesk.AutoCAD.Windows.Data
  • Autodesk.AutoCAD.Windows.ToolPalette

Контейнер «AcDbMgd» (файл «AcDbMgd.dll»):

  • Autodesk.AutoCAD.Colors
  • Autodesk.AutoCAD.ComponentModel
  • Autodesk.AutoCAD.DatabaseServices
  • Autodesk.AutoCAD.DatabaseServices.Filters
  • Autodesk.AutoCAD.Geometry
  • Autodesk.AutoCAD.GraphicsInterface
  • Autodesk.AutoCAD.GraphicsSystem
  • Autodesk.AutoCAD.LayerManager
  • Autodesk.AutoCAD.Runtime
Читайте также:  Установка встраиваемого светильника с лампой mr16

Контейнер «AdWindows» (файл «AdWindows.dll»):

  • Autodesk.Internal.InfoCenter
  • Autodesk.Internal.Windows
  • Autodesk.Internal.Windows.ToolBars
  • Autodesk.Private.InfoCenter
  • Autodesk.Private.SubAwareService
  • Autodesk.Private.WebSearchService
  • Autodesk.Private.Windows
  • Autodesk.Private.Windows.ToolBars
  • Autodesk.Private.WsCommCntrLib
  • Autodesk.Windows
  • Autodesk.Windows.Common.Utilities
  • Autodesk.Windows.ToolBars

Контейнер «AcCui» (файл AcCui.dll»):

  • Autodesk.AutoCAD.Customization

имена многих классов AutoCAD .NET API совпадают с именами стандартных классов .NET, что не очень удобно. Например, если обратиться в коде к классу Application , то Visual Studio выругается на неоднозначность этого определения: класс с таким именем есть как в пространстве имен System.Windows , так и в пространстве имен Autodesk.AutoCAD.ApplicationServices . Чтобы не писать каждый раз полное имя, можно добавить в начало файла строку

Теперь в любом месте этого файла можно вместо Autodesk.AutoCAD.ApplicationServices.Application писать acadApp .

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

Важный момент: обязательно запретите копирование библиотек AutoCAD .NET API в каталог сборки при построении проекта! Для этого найдите в свойствах каждой добавленной ссылки параметр CopyLocal и установите его в False .

2.3. Написать код плагина

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

В первом пространстве имен ( System.Windows.Forms ) хранится описание класса MessageBox , с помощью которого мы будем выводить сообщения. Чтобы сделать его доступным, необходимо добавить ссылку на одноименную сборку .NET.

Во втором пространстве имен ( Autodesk.AutoCAD.Runtime ) определены интерфейс IExtensionApplication и атрибут CommandMethod . Причем описание IExtensionApplication находится в файле AcDBMgd.dll, а описание CommandMethod – в файле AcMgd.dll, поэтому придется добавить ссылки на обе эти библиотеки.

Таким образом, всего необходимо добавить три ссылки:

UPD. 09.04.2018. Важное дополнение от lasteran: В новых версиях (предположительно начиная с AutoCAD 2013) класс CommandMethod содержится не в AcDBMgd.dll, а в AcCoreMgd.dll, так что придётся добавить ссылку ещё и на эту библиотеку. Учтите это, если работаете с новой версией!

Затем мы объявляем класс Commands . Именно он и будет «отправной точкой» плагина. Наш класс унаследован от интерфейса IExtensionApplication , поэтому в нем могут быть реализованы методы Initialize и Terminate . Первый из них автоматически выполняется при загрузке плагина, второй – при выгрузке.

AutoCAD не предоставляет разработчику возможность выгрузить плагин после того, как он будет загружен. Поэтому реально метод Terminate будет вызываться только в одном случае – при закрытии самого AutoCAD.

Почитать поподробнее про методы Initialize и Terminate можно тут (rus) и там (англ.).

Наконец, мы объявляем функцию MyCommand , которая будет реализовывать команду AutoCAD. Она обязательно должна ничего не принимать на вход и ничего не возвращать на выходе (не знаю, откуда у меня взялось это убеждение, но оно есть). Внутри этой функции можно делать все, что заблагорассудится (в пределах разумного, конечно), причем есть возможность работать как с AutoCAD .NET API, так и со стандартными классами .NET. Например, можно создать обычную форму Windows с полями ввода, отобразить ее на экране с помощью ShowModal() , а затем на основе введенных пользователем данных внести изменения в открытый в AutoCAD чертеж.

Чтобы «превратить» созданный метод в команду AutoCAD, применяется атрибут CommandMethod . В скобках после него указывается имя создаваемой команды, которое можно будет использовать непосредственно в среде AutoCAD.

После сборки этого проекта у нас получится готовый к употреблению плагин.

2.4. Загрузить созданный плагин

Нужно запустить AutoCAD и выполнить команду «NETLOAD»:

Затем в открывшемся окне указать путь к файлу плагина:

После этого плагин будет загружен в AutoCAD. Мы должны увидеть первое сообщение:

Если при загрузке плагина произошла критическая ошибка, она будет выведена в консоль AutoCAD:

Сообщения обычно понятные – помогут разобраться, если случай не сильно клинический. 🙂

Теперь, когда плагин загружен, можно выполнить нашу тестовую команду:

… и увидеть результат:

Работает. Теперь можно закрывать AutoCAD.

2.5. Отладить плагин (при необходимости)

Процедура запуска плагина для отладки очень хорошо расписана в этом посте Tepliuk.

источник