20.09.2013

Немного о загрузке приложений

Вот уж не знаю, стоит ли писать этот пост, ну да ладно ;)

Затрону вопросы ручной загрузки приложений. Именно ручной, поскольку многое из того, что касается автоматической загрузки, освещено в статьях Последовательность загрузки приложений в AutoCAD и Последовательность загрузки приложений в AutoCAD с учетом SECURELOAD.

С lsp-файлами все более или менее ясно: язык таков, что код практически не зависит от версии (уточнение: начиная с AutoCAD R14) и разрядности AutoCAD (при условии, конечно, что все написано корректно). Вопрос касается как раз не-lsp: dvb, arx, dbx. .NET-сборки тоже мелькнут ;)

Еще раз подчеркиваю - автоматическую загрузку не рассматриваю. Уж больно много там вариантов :)

Итак, поехали.
Технология загрузки остальных вариантов почти ничем не отличается. Основная проблема - выбрать нужную версию загружаемого файла.
  • DVB: VBA-код. Загружается только при условии, что в AutoCAD включена поддержка VBA (ее можно отключить; в последних версиях VBA-enabler вообще приходится скачивать и устанавливать отдельно). Код обладает несколькими не очень приятными моментами:
    1. Код может быть защищен паролем. По слухам, есть какие-то методы снятия этих паролей, но лично у меня ни один из них ни разу не сработал.
    2. VBA-модули, как ни парадоксально, зависят от версии AutoCAD. Точнее, от версии vba-интерпретатора и версии MS Forms (которые используются там в полный рост): можно создать отличную форму в AutoCAD 2008, но код такой будет работать только в более поздних версиях. Возможно, сработает в 2007, но, например, 2005 точно откажется обрабатывать такой модуль.
    3. VBA очень болезненно реагирует на разные разрядности AutoCAD: описание проблемы и ответ от ADN DevHelp.
    Что самое плохое - vba-разработчики редко указывают, в какой версии AutoCAD и в какой разрядности они создавали свои коды и формы. Поэтому загрузка dvb нередко превращается в рулетку.
  • ARX/DBX: модули, написанные на С++. Чертовски сильно зависят от версии и разрядности. Тем не менее следует помнить следующее: у Autodesk есть т.н. "трехлетний цикл смены ядра". Т.е., как правило, модули, написанные для AutoCAD 2010, можно будет загрузить в AutoCAD 2010, 2011, 2012.
    Многократно упоминавшийся Александр Ривилис, например, выпускает свои arx-модули, указывая в имени файла соответствующую "версию" arx и разрядность AutoCAD, для которой собран arx. Воспользуюсь его технологией и сведу все один список (таблица получилась неудобоваримой). В одной строке списка указываются версии AutoCAD, в которые можно (как правило!) безболезненно загружать один и тот же arx-модуль.
    32-разрядные версии обозначаются как x32 (и плевать на исторически сложившиеся традиции).
    1. AutoCAD 2006
    2. AutoCAD 2007x32, 2008x32, 2009x32
    3. AutoCAD 2008x64, 2009x64
    4. AutoCAD 2010x32, 2011x32, 2012x32
    5. AutoCAD 2010x64, 2011x64, 2012x64
    6. AutoCAD 2013x32, 2014x32. Возможно, сюда же попадет и 2015x32
    7. AutoCAD 2013x64, 2014x64. Возможно, здесь же будет 2015х64
    Советую обратить внимание на следующий момент: я сказал - как правило. Вполне вероятна ситуация, при которой в каждую версию AutoCAD приходится загружать свои собственные версии arx / dbx модулей (ярчайший пример тому - AutoCAD Architecture).

    Почти все сторонние разработчики указывают соответствующую версию и разрядность созданного ими arx-модуля, что чертовски удобно :)
  • .NET-сборки: Тут я не сильный спец, но в принципе технология выбора нужной версии .NET dll такая же, как и для arx / dbx. Статистику я не собирал, но могу сказать следующее: нередко для .NET-сборки абсолютно некритична разрядность AutoCAD'a, т.е. одну и ту же сборку можно спокойно загрузить и в 32-разрядный, и в 64-разрядный AutoCAD. Но бывают и исключения.

1 комментарий:

  1. Andrey Bushman02.10.2013, 12:24

    >нередко для .NET-сборки абсолютно некритична разрядность AutoCAD'a, т.е. одну и ту же сборку можно спокойно загрузить и в 32-разрядный, и в 64-разрядный AutoCAD. Но бывают и исключения.

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

    ОтветитьУдалить

Примечание. Отправлять комментарии могут только участники этого блога.