Всем привет.
Статья носит немного спонтанный характер, но, я надеюсь, эта информация будет полезной. Я наткнулся на такую возможность в меру случайно, но она показалась мне полезной, поэтому хочу поделиться наблюдением.
Речь пойдет о попытке установить плагины с одной САПР системы на другую. Как и зачем это делалось, а также что из этого получилось (и что не получилось) – под катом.



Начнем, пожалуй, с вопроса «Зачем?».
А вот зачем:
Продукт Autocad является признанным лидером на рынке САПР для малого и среднего бизнеса. Все бы хорошо, но компания проводит не очень дружественную к пользователю ценовую политику, что, вместе с непростой экономической ситуацией, способствует поиску (и нахождению) альтернатив. Их, на самом деле, довольно много, недорогих, а порой, даже бесплатных: от Nanocad до Bricscad, GstarCad и ZWcad, который, кстати, слегка попал под раздачу от Autodesk. Беда в том, что любой переход с одного инструмента на другой требует привыкания, а порой даже обучения.
Благо, производители альтернативных САПРов стремятся максимально приблизиться к стандартам, заданным флагманом, и, надо признать, зачастую им это удается. Как в функциональном плане, так и в контексте интерфейса различий совсем не много, так что переучиваться точно не придется. Но есть закавыка: в процессе работы конструктор обычно собирает свой «личный» набор инструментов, таких как плагины, скрипты и прочая вспомогательная мелочь, без которой уже тяжело привычно и быстро работать. Тем более, что продвинутые САПРы позволяют создавать собственные программки, которые выполняют ту или иную нужную функцию.
Так вот, речь пойдет об использовании подобных инструментов в «чужой» среде. Если конкретно, попробуем применить плагины для Автокада в среде GStarcad. У меня есть стойкое подозрение, что с другими программами будет та же история, но пока рассмотрим именно эту парочку.

Самое время ответить на вопрос «как?».
А вот как:
Многие САПР поддерживают языки программирования. Один из таких языков — Lisp, точнее, его диалект: AutoLISP (Wiki — англ, Вікі — укр).
Есть множество программ, написанных для Автокада на Лиспе. Вот несколько полезных ссылок:
прикладные LISP-программы
сервисные LISP программы
отличная подборка кастомных программ
Естественно, все это (и много больше) легко находится в интернетах.
Именно с Лисп-плагинами портирование происходит проще всего. Собственно, и портирования никакого не требуется.
Просто открываем Gstarcad, в командной строке выполняем команду appload и в открывшемся окне подключения плагинов кликаем кнопку «Load».
image
Находим файл .lsp, в котором содержится код Lisp и подключаем его.
Обратите внимание на формат файлов, которые можно подключить как плагины (в рамке на скрине).
image
САПР сообщит, что плагин успешно подключен, и какой командой можно к нему обратиться.
Для примера используем плагин, который помогает выделять дугу на окружности при пересечении ее с другими объектами.
image
Процесс работы с плагином отображается в командной строке.
Такое подключение активирует плагин на один рабочий сеанс. Если он нужен перманентно, то можно добавить его в «автозагрузку» программы, кликнув на кнопку «Contens» или на иконку «StartUp suite» и через появившееся диалоговое окно выбрать нужный плагин.

Повторить подобный трюк для VBA мне не удалось.
Информация для тех, кто умеет программировать на .NET. Цитата из статьи-сравнения Autocad и ZWcad:


Первым делом нужно установить .NET версии 4.0 и заменить все ссылки на файлы AcMgd.dll и AcDbMgd.dll на соответствующие версии этих файлов для ZWCAD+. Естественно, сделать это несложно. Далее необходимо соответствующим образом изменить пространство имен. Например, моя утилита была написана в VB.NET, и потребовалось внести следующие изменения в список импортов в начале программного кода:
image

В проекте было еще несколько аналогичных моментов, которые требовали корректировки, но, опять же, все это были всего лишь модификации пространства имен, как и в случае, показанном выше. Невероятно, но помимо этих, очень незначительных изменений, больше ничего не понадобилось делать. Все свойства и методы, использованные мной в первоначальном AutoCAD’овском API, по-видимому, имели действующие равнозначные эквиваленты в ZWCAD+, поскольку в IDE никаких ошибок выдано не было.
...

Эта выдержка наталкивает на мысль, что VBA и C# проекты тоже можно портировать, но все-таки приложив определенные, пусть и небольшие, усилия.

Заинтересовавшись вопросом, выяснил, что многие серьезные программы-дополнения (плагинами их уже язык не поворачивается называть), например CadProfi, поддерживают «альтернативные» САПР.

В целом, делаю вывод, что применить вспомогательное ПО, разработанное для Autocadа, можно и на «альтернативных» САПР, при чем это может оказаться даже легче, чем кажется на первый взгляд.
Кроме того, прошу тех, кто в теме или имеет опыт подобных экспериментов прокомментировать статью, т.к. я лично с САПРами профессионально не работаю, потому мог упустить какой-нибудь важный момент.

Комментарии (2)


  1. Celtis
    05.01.2016 19:24
    +1

    Беда в том, что любой переход с одного инструмента на другой требует привыкания, а порой даже обучения.
    Беда в том, что НОРМАЛЬНАЯ поддержка DWF — стандарта отрасли, есть только у продуктов Autodesk. Все остальные допускают определенные… вольности в его интерпретации. Это как с Word и аналогами, разница лишь в том, что при семизначных(минимум) бюджеах проектов надеяться, что чертеж, сотворенный в альтернативном КАДе откроется у подрядчика в другом альтернативном КАДе так, как нужно — удел отчаянных авантюристов.


  1. ISL
    11.01.2016 19:02
    +1

    Наш опыт портирования приложений на nanoCAD отчасти изложен в статье habrahabr.ru/company/nanosoft/blog/248753, написанной по мотивам доклада на конференции о кросс-САПР-платформенной разработке. В статью не вошло введение из доклада, посвящённое истории возникновения и развития API клонов AutoCAD-а, но его можно прочитать в презентации или посмотреть в записи доклада, они в конце статьи.