2012-02-16 2 views
2

Я делаю autocad add on с dot net 3.50 и i ссылкой на acdbmgd.dll, acmgd.dll из autocad 2012 Что я могу сделать, чтобы он запускался как на autocad 2010 и АвтоКад 2011 если я должен ссылаться на acdbmgd.dll, acmgd.dll из AutoCAD 2010, где я могу получить этот DLL в то время как я просто AutoCAD 2012Как сделать надстройку autocad addon во многих версиях autocad

ответ

5

Я имел некоторый успех, используя библиотеки 2008 в AutoCAD 2010, так с использованием библиотек из AutoCAD 2010, вероятно, ваш лучший выбор, хотя и не гарантированно работает. Это будет зависеть именно от того, что вы делаете.

Вы можете загрузить библиотеки как часть пакета ObjectARX 2010 от Autodesk Developer Center (в нижней части страницы). Вы также можете получить ObjectARX 2011, если необходимо.

4

Моя лучшая удача с долговечностью надстроек AutoCAD была с AutoLISP. У меня есть инструменты, которые я написал в 1995 году, которые все еще готовятся крепко сейчас без каких-либо изменений.

+0

Я полностью согласен с тобой –

+0

(я могу видеть (как (это было бы (выдержать (тест времени (но)) скобки привод) me) орехи).);) SYNTAX ERROR –

+0

@CADbloke Я не мог контролировать свой смех здесь. Первое, что заставило меня отвернуться от LISP, было его синтаксисом. Кстати, вы пытались запустить приложения AutoCAD 2012.net в предыдущих версиях без перекомпиляции. Используя обычный API, как можно вернуться с использованием библиотек 2012 года. – Jatin

1

. API-интерфейс .Net более совместим с ActiveX, но все еще есть некоторые отличия.

Вы всегда можете использовать Reflection для вызова функций (вызывать их по имени), но будет проведено множество проверок, и для вашего приложения будет много работы. реагировать одинаково на всех версиях.

Ваш лучший выбор (что бы я сделал хотя бы) было бы сделать класс-оболочку для каждой функции, которую вы хотите. Например, я создавал бы класс «MyCircle» для управления кругами, а затем внутри этого класса создавал бы общую функцию (например: «ChangeThickness (int newThickness)») и делал там свой код отражения, чтобы вы могли контролировать, как выполняется вызов, в зависимости от установленных версий AutoCAD (например, чтобы не вызывать определенную функцию в определенной версии AutoCAD, поскольку она содержит ошибку). Это сделает расширяемый слой, который вы сможете повторно использовать во всех версиях AutoCAD, и вы сможете поддерживать любые изменения в API.

0

Я делаю это на 2012 и 2013 годы. Есть некоторая разница между ними.

Обычно я запускаю два проекта один с помощью мастера 2012 года Acad.NET, а другой - с помощью мастера Acad .NET 2013 года.

Update и одновременно

В большинстве случаев его просто копировать вставить несколько случаев она будет отличаться, где в 2013 году API эволюционировали, например, в Civil3D 2012 там не любой Co-Go точки апи, где, как и в 2013 году добавили, что в этом случае мне нужно немного изменить код для работы в 2013 году.

+0

Слишком сложно сделать вручную, не взорвав его.Я написал https://github.com/CADbloke/CodeLinker, чтобы синхронизировать ситуацию. В любом случае вам лучше иметь один набор файлов кода и использовать директивы компилятора для контроля различий. –

 Смежные вопросы

  • Нет связанных вопросов^_^