AutoCAD 2027 SDK: What Every Plugin Developer Needs to Know?

AutoCAD 2027 ships with a new ObjectARX SDK. If you maintain C++ or .NET plugins for AutoCAD, this post covers what changed in the development environment, what the compatibility picture looks like, and where to find the full API delta.


Binary Compatibility & Development Environment

Not every AutoCAD release breaks compatibility. When two releases are binary compatible, a plugin compiled for the older one loads cleanly in the newer one without recompilation. AutoCAD 2027 is not binary compatible with 2026 or 2025 — a full recompile against new libraries is required.

Release Binary Compatible With Windows — ObjectARX (C++) Windows — Managed .NET macOS
AutoCAD 2027 2027 only VS 2026 v18.0, VC tools 14.44.35207 (recommended)
VS 2022 v17.14.9 (C++ only)
VS 2026 v18.0 + .NET 10.0 macOS 15.4.1+, Xcode 16.3, Mono 6.1.2
AutoCAD 2026 2026, 2025 VS 2022 v17.10.4 VS 2022 v17.10.4 + .NET 8.0 macOS 14.3.1+, Xcode 15.4, Mono 6.1.2
AutoCAD 2025 2025 only VS 2022 v17.8.0 VS 2022 v17.8.0 + .NET 8.0 macOS 13.3+, Xcode 14.3, Mono 6.1.2

Note: Visual Studio 2022 (v17.14) uses the v143 toolset family but ships with MSVC toolset version 14.44.35207, which is sufficient to compile ObjectARX C++ projects for AutoCAD 2027. It cannot be used for Managed .NET development targeting AutoCAD 2027 — Visual Studio 2026 (v18.0, toolset v145) is required for that.

Two version-specific identifiers to update in your build scripts:

  • Linker library suffix: 26 — e.g. acdb26.lib, acge26.lib, acui26.lib
  • Registry key: R26.0 (was R25.1). Never hard-code this string — use acrxProductKey() or AcDbHostApplicationServices::getUserProductRegistryRootKey() at runtime.

Setting Up a C++ (ObjectARX) Project

ObjectARX applications are standard Windows DLLs compiled with an .arx extension. The project settings below are drawn from a typical SDK .vcxproj:

SettingValue
Configuration typeDynamic Library (.arx output extension)
Platform toolsetv145 — Visual Studio 2026 (v18.0) uses the v145 toolset family.
Visual Studio 2022 (v17.14) uses the v143 toolset family but includes MSVC toolset version 14.44.35207, which is sufficient to compile ObjectARX projects for AutoCAD 2027.
C++ language standardstdcpp20 (C++20)
Conformance modetrue
Character setUnicode
Additional include directories$(ObjectARX)\inc;$(ObjectARX)\inc-x64 — both are required
Additional library directories$(ObjectARX)\lib-x64
Runtime libraryMulti-threaded DLL (/MD) — set explicitly on release configs
Detect 64-bit Portability IssuesNo — suppresses C4311 warnings from ObjectARX headers
Module definition file$(ObjectARX)\inc\AcRxDefault.def — provided by the SDK, defines the required acrxEntryPoint and acrxGetApiVersion exports without a LIBRARY statement
Enable UACfalse
Additional dependenciesAt minimum: rxapi.lib, acdb26.lib

Note: inc contains the common headers used across platforms; inc-x64 contains 64-bit-specific headers. Both directories must be on the include path for a 64-bit ARX build.

Every ARX application must export two entry points. The minimal source and DEF file:

// main.cpp
#include "rxregsvc.h"
#include "acutads.h"

extern "C" AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)
{
    switch (msg) {
    case AcRx::kInitAppMsg:
        acrxUnlockApplication(appId);   // allow unloading
        acrxRegisterAppMDIAware(appId); // MDI-aware
        acutPrintf("\nPlugin loaded.");
        break;
    case AcRx::kUnloadAppMsg:
        acutPrintf("\nPlugin unloaded.");
        break;
    }
    return AcRx::kRetOK;
}

Use AcRxDefault.def from the SDK’s \inc directory as the module definition file. It defines the required exports correctly and does not include a LIBRARY statement, so no rename is needed per project. Set it in the linker settings:

Linker → Input → Module Definition File
$(ObjectARX)\inc\AcRxDefault.def

Load the built .arx with (arxload "myapp"), the ARX command, or APPLOAD.


Setting Up a Managed .NET Project

The single most important change for 2027: managed applications must target .NET 10.0. AutoCAD 2025 and 2026 used .NET 8.0 LTS.

  1. Create a Class Library project in VS 2026 targeting .NET 10.0 (Long Term Support). Do not use the .NET Framework or Universal Windows variants.
  2. Edit the project file and set TargetFramework to net10.0-windows, then add the FrameworkReference:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net10.0-windows</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <FrameworkReference Include="Microsoft.WindowsDesktop.App" />
  </ItemGroup>

</Project>

Note: If your project was on .NET 6 or earlier and never migrated to .NET 8, this FrameworkReference element is new — add it explicitly.

  1. Add references to acdbmgd.dll, accoremgd.dll, and acmgd.dll from your AutoCAD installation. Set Copy Local = False for each — AutoCAD supplies them at runtime.
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;

[assembly: CommandClass(typeof(MyPlugin.MyCommands))]

namespace MyPlugin
{
    public class MyCommands
    {
        [CommandMethod("HELLO")]
        public void HelloWorld()
        {
            var doc = Application.DocumentManager.MdiActiveDocument;
            doc.Editor.WriteMessage("\nHello from .NET 10!");
        }
    }
}

Load the assembly in AutoCAD with the NETLOAD command, or add it to the startup suite via APPLOAD.


What’s New in the API

The 2027 SDK adds new members across the database (AcDb), geometry (AcGe), and runtime (AcRx) namespaces, new global utility functions, new MFC extension class methods, new constants, and removes several previously-deprecated members. The managed .NET libraries have been migrated to .NET 10 with a handful of new members and one removal.

The full, searchable API delta is on the Autodesk Help site:


A Few Things Worth Noting

Clean rebuild required. After updating your toolchain and library references, do a full clean rebuild — partial builds against old object files will fail at link time.

Clear the clipboard before LoadCatalogs(). Loading Tool Palette catalogs while ACTC clipboard data is present can crash AutoCAD. Clear it first:

IDataObject dataObj = System.Windows.Forms.Clipboard.GetDataObject();
if (dataObj.GetFormats().Any(f => f.Contains("ACTC")))
    System.Windows.Forms.Clipboard.Clear();

ToolPaletteManager.Manager.LoadCatalogs();

Single-threaded only. ObjectARX does not support multi-threaded access. If your application spawns threads, ensure only one thread at a time touches the ObjectARX system.

Clear selection before aborting transactions.

acedSSSetFirst(NULL, NULL);
actrTransactionManager->abortTransaction();

.NET assemblies over a network cannot be loaded into AutoCAD without granting explicit trust permissions. Deploy locally.

Resources


Comments

Leave a Reply

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading