Затрону вопросы ручной загрузки приложений. Именно ручной, поскольку многое из того, что касается автоматической загрузки, освещено в статьях Последовательность загрузки приложений в AutoCAD и Последовательность загрузки приложений в AutoCAD с учетом SECURELOAD.
С lsp-файлами все более или менее ясно: язык таков, что код практически не зависит от версии (уточнение: начиная с AutoCAD R14) и разрядности AutoCAD (при условии, конечно, что все написано корректно). Вопрос касается как раз не-lsp: dvb, arx, dbx. .NET-сборки тоже мелькнут ;)
Еще раз подчеркиваю - автоматическую загрузку не рассматриваю. Уж больно много там вариантов :)
Итак, поехали.
- LSP, FAS, VLX: lisp-коды - обычные, шифрованные, компилированные... Повторяться не хочу, поэтому отсылаю к статье Как использовать лисп, опубликованный на форуме. Там все описано и расписано, даже с картинками ;)
- DVB: VBA-код. Загружается только при условии, что в AutoCAD включена поддержка VBA (ее можно отключить; в последних версиях VBA-enabler вообще приходится скачивать и устанавливать отдельно). Код обладает несколькими не очень приятными моментами:
- Код может быть защищен паролем. По слухам, есть какие-то методы снятия этих паролей, но лично у меня ни один из них ни разу не сработал.
- VBA-модули, как ни парадоксально, зависят от версии AutoCAD. Точнее, от версии vba-интерпретатора и версии MS Forms (которые используются там в полный рост): можно создать отличную форму в AutoCAD 2008, но код такой будет работать только в более поздних версиях. Возможно, сработает в 2007, но, например, 2005 точно откажется обрабатывать такой модуль.
- VBA очень болезненно реагирует на разные разрядности AutoCAD: описание проблемы и ответ от ADN DevHelp.
- ARX/DBX: модули, написанные на С++. Чертовски сильно зависят от версии и разрядности. Тем не менее следует помнить следующее: у Autodesk есть т.н. "трехлетний цикл смены ядра". Т.е., как правило, модули, написанные для AutoCAD 2010, можно будет загрузить в AutoCAD 2010, 2011, 2012.
Многократно упоминавшийся Александр Ривилис, например, выпускает свои arx-модули, указывая в имени файла соответствующую "версию" arx и разрядность AutoCAD, для которой собран arx. Воспользуюсь его технологией и сведу все один список (таблица получилась неудобоваримой). В одной строке списка указываются версии AutoCAD, в которые можно (как правило!) безболезненно загружать один и тот же arx-модуль.
32-разрядные версии обозначаются как x32 (и плевать на исторически сложившиеся традиции).
- AutoCAD 2006
- AutoCAD 2007x32, 2008x32, 2009x32
- AutoCAD 2008x64, 2009x64
- AutoCAD 2010x32, 2011x32, 2012x32
- AutoCAD 2010x64, 2011x64, 2012x64
- AutoCAD 2013x32, 2014x32. Возможно, сюда же попадет и 2015x32
- AutoCAD 2013x64, 2014x64. Возможно, здесь же будет 2015х64
Почти все сторонние разработчики указывают соответствующую версию и разрядность созданного ими arx-модуля, что чертовски удобно :)
- .NET-сборки: Тут я не сильный спец, но в принципе технология выбора нужной версии .NET dll такая же, как и для arx / dbx. Статистику я не собирал, но могу сказать следующее: нередко для .NET-сборки абсолютно некритична разрядность AutoCAD'a, т.е. одну и ту же сборку можно спокойно загрузить и в 32-разрядный, и в 64-разрядный AutoCAD. Но бывают и исключения.
>нередко для .NET-сборки абсолютно некритична разрядность AutoCAD'a, т.е. одну и ту же сборку можно спокойно загрузить и в 32-разрядный, и в 64-разрядный AutoCAD. Но бывают и исключения.
ОтветитьУдалитьЭто зависит от того, какие библиотеки AutoCAD .NET API используются в конкретном плагине: часть из них не зависит от разрядности, а часть зависит. Некоторые .NET плагины можно использовать без перекомпиляции в разных версиях AutoCAD, при условии, что используется одна и та же версия .NET, а так же при условии, что используемый функционал, предоставляемый AutoCAD .NET API присутствует во всех выбранных версиях AutoCAD.