Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
CopyLocal отключена. Добавлю этот момент в пост. Сейчас только картинку в Пэйнте отфотошоплю.)Потом узнайте цену покупкии повесьтесь.
Как-то раз заказчик спросил: «А с какими версиями AutoCAD сможет работать программа?», и мне пришлось изрядно времени потратить на поиски ответа. В целом, ответ звучит так: «Autodesk поддерживает обратную совместимость в течение трех лет».
ObjectARX SDK – набор библиотек, необходимых для работы с AutoCAD.
«AutoCAD .NET Wizard» – шаблон проекта для создания плагинов под AutoCAD. Люди знающие говорят, что этот шаблон сильно упрощает жизнь;
Если плагин предназначен для старой версии AutoCAD, то целесообразно сразу же задать в свойствах проекта версию .NET, которую будем использовать.
у меня дома установлена 32-разрядная ОС, у заказчика – 64-разрядная. Пока серьезных проблем с совместимостью не возникало. Но однажды я все же напоролся на то, что у меня функция возвращала Int32, а у заказчика – Int64. Линковщик ОЧЕНЬ расстраивался. Нужно иметь эту особенность в виду.
Исчерпывающего перечня сопоставлений я найти не смог, поэтому все проверялось методом научного тыка. Если есть более правильный способ, было бы интересно его узнать…
обязательно запретите копирование библиотек AutoCAD .NET API в каталог сборки при построении проекта! Для этого найдите в свойствах каждой добавленной ссылки параметр CopyLocal и установите его в False.
Например, можно создать обычную форму Windows с полями ввода, отобразить ее на экране с помощью ShowModal()
Чтобы «превратить» созданный метод в команду AutoCAD, применяется атрибут CommandMethod. В скобках после него указывается имя создаваемой команды, которое можно будет использовать непосредственно в среде AutoCAD.
Затем в открывшемся окне указать путь к файлу плагина:
После этого плагин будет загружен в AutoCAD. Мы должны увидеть первое сообщение:
… и увидеть результат:
Подскажите, а где можно почитать про обратную совместимость версий именно для .NET-плагинов?В целом, ответ звучит так: «Autodesk поддерживает обратную совместимость в течение трех лет».Для .NET расширений действуют иные «правила игры».
Разница прочувствована.) Но в статье рассматривалось именно создание плагина, поэтому я и употребил такую формулировку.ObjectARX SDK – набор библиотек, необходимых для работы с AutoCAD.Неверно. Это набор библиотек, необходимых для написания расширений под AutoCAD (почувствуй разницу).
Про «заглушки» я не вполне осмыслил. Получается, что для AutoCAD до 2011 версии рекомендуется создавать две отдельные сборки проекта — под x86 и x64, иначе возможны проблемы?у меня дома установлена 32-разрядная ОС, у заказчика – 64-разрядная. Пока серьезных проблем с совместимостью не возникало.Рекомендую почитать это
Конечно, я подключаю не все библиотеки, а только необходимый минимум. Но проблема в том, что у меня не сразу получается понять, какой из DLL-файлов содержит нужное мне пространство имен. Вот, к примеру, возьмем тот же самый атрибутИсчерпывающего перечня сопоставлений я найти не смог, поэтому все проверялось методом научного тыка.«Исчерпывающий перечень» тебе и не нужен — подключать следует только то, что тебе действительно необходимо.
CommandMethod. Где можно посмотреть, в каком из DLL-файлов он находится?следует пользоваться статическими методами класса Autodesk.AutoCAD.ApplicationServices.ApplicationС
ShowModal() я, похоже, действительно дал маху. Попробую исправить в проекте на ShowModalDialog(), если все получится — исправлю и в статье.Вот, к примеру, возьмем тот же самый атрибут CommandMethod. Где можно посмотреть, в каком из DLL-файлов он находится?Сперва найти строку «CommandMethod» в тексте одной из .dll библиотек, потом открыть найденную библиотеку в ILSpy или .NET Reflector.
CommandMethod?CommandMethod гарантированно будет определен в одной из них), а потом уже в IDE найти нужный файл через пункт меню Перейти к определению (Go to Definition).Подскажите, а где можно почитать про обратную совместимость версий именно для .NET-плагинов?
Про «заглушки» я не вполне осмыслил. Получается, что для AutoCAD до 2011 версии рекомендуется создавать две отдельные сборки проекта — под x86 и x64, иначе возможны проблемы?
Например, можно создать обычную форму Windows с полями ввода, отобразить ее на экране с помощью ShowModal()
Плохой способ, т.к. в этом случае существует вероятность в AutoCAD поймать Fatal Error. Вместо этого следует пользоваться статическими методами класса Autodesk.AutoCAD.ApplicationServices.Application: для WPF это методы ShowModalWindow и ShowModelessWindow, а для WinForms — методы ShowModalDialog и ShowModelessDialog.
Создание плагинов для AutoCAD с помощью .NET API (часть 1 – первые шаги)