О Visual Studio, взаимодействие с другим API

В данной статье приведена информация о совместимости отдельных версий Microsoft Visual Studio (MS VS далее) с соответствующими версиями AUtoCAD .NET API. MS VS может взаимодействовать одновременно с .NET API и COM (ActiveX) API.

Версия AutoCADRelease-numПоддерживаемые версии SDKВерсия .NET
AutoCAD 2027?AutoCAD 202710.0(?)
AutoCAD 202625.1AutoCAD 2026, AutoCAD 20258.0
AutoCAD 202525.0AutoCAD 20258.0
AutoCAD 202424.3AutoCAD 2024, AutoCAD 2023, AutoCAD 2022, AutoCAD 20214.8
AutoCAD 202324.2AutoCAD 2023, AutoCAD 2022, AutoCAD 20214.8
AutoCAD 202224.1AutoCAD 2022, AutoCAD 20214.8
AutoCAD 202124.0AutoCAD 20214.8
AutoCAD 202023.1AutoCAD 2020, AutoCAD 20194.7
AutoCAD 201923.0AutoCAD 20194.7
AutoCAD 201822.0AutoCAD 20184.6
AutoCAD 201721.0AutoCAD 20174.6
AutoCAD 201620.1AutoCAD 2015, AutoCAD 20164.5
AutoCAD 201520.0AutoCAD 20154.5
AutoCAD 201419.1AutoCAD 2013, AutoCAD 20144.0
AutoCAD 201319.0AutoCAD 20134.0
AutoCAD 201218.2AutoCAD 2010, AutoCAD 2011, AutoCAD 20123.51 SP1
AutoCAD 201118.1AutoCAD 2010, AutoCAD 20113.51 SP1
AutoCAD 201018.0AutoCAD 20103.51 SP1
AutoCAD 200917.2AutoCAD 2007, AutoCAD 2008, AutoCAD 20093.0
AutoCAD 200817.1AutoCAD 2007, AutoCAD 20082.0
AutoCAD 200717.0AutoCAD 20072.0
AutoCAD 200616.2AutoCAD 2005, AutoCAD 20061.1 SP1
AutoCAD 200516.1AutoCAD 20051.1

Рекомендуемая версия MS VS для разработки 2022, в связи с тем, что под ней возможно загрузить .NET 8.0, используемый в AutoCAD с 2025й версии. Вместе с тем, возможно при помощи установщика MS VS загрузить целевую версию .NET 8, а разработку вести из-под Visual Studio 2019.

С версии AutoCAD 2027 и средой .NET 10 вести разработку вероятнее всего придется на MS VS 2026.

Для взаимодействия с AutoCAD .NET API необходимо подключить к целевому проекту библиотеки (перечень см. в пункте раннее) из папки установки AutoCADили через NuGet-пакеты от Autodesk. Версии пакетов см. по колонке "Release number".

Взаимодействие с C++ API

Из-под приложений на .NET API можно получать доступ к объектам, созданным на стороне неуправяемого кода (здесь, на ObjectARX); так как некоторые объекты AutoCAD не имеют управляемых оберток. Создать управляемый объект из неуправляемого объекта с помощью метода DisposableWrapper.Create(). Указатель на базовый неуправляемый объект из управляемого объекта можно получить с помощью свойства UnmanagedObject.

Взаимодействие с COM

Библиотеки COM (ActiveX) API в AutoCAD представлены Autodesk.AutoCAD.Interop.dll, Autodesk.AutoCAD.Interop.Common.dll

Существует 3 способа получения COM-интерфейса со стороны .NET API:

  • Сущность "Приложение AutoCAD";
  • Сущность "Документ AutoCAD" и "База данных документа AutoCAD";
  • Сущность "Объект AutoCAD";

На листинге ниже приведены основные приведения, доступные в .NET API для перехода к COM-интерфейсам

var acApp = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication as AutoCAD.AcadApplication;
Autodesk.AutoCAD.ApplicationServices.Document doc;
var acDoc = doc.GetAcadDocument() as AutoCAD.AcadDocument;
var acDb = doc.Database.AcadDatabase as AutoCAD.AcadDatabase;
Autodesk.AutoCAD.DatabaseServices.Entity ent;
var acEntity = ent.AcadObject as AutoCAD.AcadEntity;