Разработка плагинов AutoCAD на примере
Я заинтересован в разработке плагина AutoCAD и пытаюсь понять взаимосвязи между несколькими различными типами файлов плагина AutoCAD:
- Управляемые библиотеки DLL, которые поставляются с плагинами AutoCAD
- ARX-файлы, которые поставляются с плагинами AutoCAD
- Файлы CUIX, которые поставляются с плагинами AutoCAD
Из того, что я могу сказать, все эти три файла взаимосвязаны и работают вместе для инициализации и загрузки плагина. Я просто не вижу леса сквозь деревья в отношении того, какую информацию содержит каждый тип файлов, какие файлы загружаются или зависят от другие и т. д.
Похоже, что основная функциональность плагина должна входить в файл ARX, написана на C++ и скомпилирована для нативной / целевой платформы.
Похоже также, что при запуске AutoCAD загружает свои подключаемые библиотеки DLL, которые являются управляемыми библиотеками.NET (обычно написанными на C#), и, в свою очередь, они вызывают свои собственные / скомпилированные соответствующие файлы ARX. Относительно того, где файл CUIX вступает в игру, я все еще понятия не имею.
Может кто-нибудь помочь объяснить отношения и зависимости этих файлов, и какие типы кода / логики / данных идут внутри них? Заранее спасибо!
1 ответ
Все библиотеки ядра AutoCAD написаны в неуправляемом коде (я верю в C++). В конечном итоге, какой бы API вы не выбрали для разработки своих плагинов, вы будете манипулировать неуправляемыми объектами AutoCAD из этих базовых библиотек через один из их API. Помимо трех типов файлов, которые вы упомянули, существует множество других способов создания плагинов для AutoCAD. Вот некоторые примеры: сценарии Lisp, сценарий VBA, клиенты COM (VB, Java, Delphi). Большинство из них уже устарели, и в наши дни API.Net и C++(ObjectARX) наиболее популярны. Тем не менее, остальные все еще используются по наследству. Если вы запускаете новый модуль, вы должны использовать.Net или ARX.
.NET API - это набор библиотек-оболочек.NET, которые обертывают API ObjectARX. Наиболее распространенные dll, на которые вы бы ссылались: accoremgd.dll
, acdbmgd.dll
а также acmgd.dll
Но есть и другие. Эти библиотеки позволяют вам управлять собственными объектами AutoCad через язык.NET. Если вы хотите создать плагины для AutoCad в C#, то вам нужно всего лишь кодировать в C#. Это здорово для скорости разработки, но производительность вашего кода будет несколько ниже, чем у плагинов ARX. При этом, я действительно хочу подчеркнуть, что это все еще чертовски быстро. Я не нашел необходимости кодировать в C++ для AutoCAD из-за проблем с производительностью. В целом это очень мощный и многофункциональный. Вы можете делать что угодно с рисунком, используя только C#.
Посмотрите на этот ответ, который я дал недавно. Он должен ответить на большинство, если не на все ваши вопросы о начале разработки плагинов для AutoCAD в.Net.
ObjectARX API очень похож на то, что я описал для.NET API, за исключением вашего кода на C++. Некоторые из библиотек включают rxapi.lib
, accore.lib
, acgiapi.lib
, acdrawbridge.lib
а также некоторые другие. Разработка с использованием C++ значительно более громоздка, чем при использовании C#, но код C++ выполняется быстрее, хотя и не с большим отрывом.
ФайлыCUIX живут в совершенно другой галактике. Они используются для настройки пользовательского интерфейса среди других связанных вещей. Вы можете просмотреть различные варианты использования файлов cuix здесь.
Ваш выбор действительно сводится к тому, что вы делаете. Если вы пишете код, который будет обрабатывать сотни тысяч чертежей как можно быстрее, вы захотите изучить API C++. Если вы обрабатываете только сотни чертежей или просто создаете кучу команд для пользователей, я настоятельно рекомендую вам использовать C# API. Стоит небольшой удар по производительности, который почти никогда не будет ощутим для пользователя.
Для получения дополнительной информации перейдите по этой ссылке AutoDesk и прокрутите вниз до учебных лабораторий. Я бы порекомендовал вам хотя бы прочитать учебные лаборатории ObjectARX и.NET. После того, как вы выберете то, что хотите использовать, пройдите все лаборатории для того, чтобы выбрать один. Вы поблагодарите себя позже, так как сэкономите бесчисленные часы головной боли и разочарования!
Удачи!