AutoCAD 2025 ObjectARX(C++)开发环境搭建

最近更新于 2025-03-16 21:16

基本环境

AutoCAD 机械版 2025
Visual Studio 2022(需要安装“C++ 桌面开发”,建议右侧手动增加勾选“MFC”)
file

file

开发环境

下载

百度网盘

https://pan.baidu.com/s/115Lk6uom7vF70_WyJdUMYA?pwd=h2a6

官网下载

(1)ObjectARX SDK 下载(提供开发使用的 API):https://aps.autodesk.com/developer/overview/autocad-objectarx-sdk-downloads
直接下载地址:https://damassets.autodesk.net/content/dam/autodesk/files/esd/objectarx/2025/objectarx-for-autocad-2025-win-64bit-dlm.sfx.exe
file

(2)ObjectARX Wizard 下载(项目创建向导):https://aps.autodesk.com/developer/overview/autocad
直接下载地址:https://github.com/ADN-DevTech/ObjectARX-Wizards/raw/ForAutoCAD2025/ObjectARXWizardsInstaller/ObjectARXWizard.zip
file

安装

SDK

SDK 下载的是一个自解压程序,自定义解压路径,注意记住路径,后面要用
file

file

Wizard

Wizard 下载的包解压出来
file

以管理员身份运行 powershell
file

输入安装文件的绝对路径,通过 powershell 间接实现管理员运行安装程序,点 Next进入下一步
file

分别填写默认符号(自定义)、ObjectArx 路径、CAD 路径
这里的符号特别注意不要输入标点符号之类的,否则创建项目的时候会关联进代码,导致错误
file

手动修改项

禁用安全检查(属性预设)【可选】

以管理员权限编辑 C:\Program Files (x86)\Autodesk\ObjectARX 2025 Wizards\ArxAppWiz\Templates\1033\Autodesk.arx-2025.props
不想用 VS 自创的安全函数,又不想手动禁用就这里直接改模板
Project 层内找到一个空位置,插入下面内容

    <ItemDefinitionGroup>
        <ClCompile>
            <BufferSecurityCheck>false</BufferSecurityCheck>
        </ClCompile>
    </ItemDefinitionGroup>

file

禁用较小类型检查(属性预设)

VS 中 Debug 默认开启了较小类型检查
file
可能会导致报错/RTCc rejects conformant code

以管理员权限编辑 C:\Program Files (x86)\Autodesk\ObjectARX 2025 Wizards\ArxAppWiz\Templates\1033\Autodesk.arx-2025.props
Project 层内找到一个空位置,插入下面内容

    <ItemDefinitionGroup>
        <ClCompile>
            <SmallerTypeCheck>false</SmallerTypeCheck>
        </ClCompile>
    </ItemDefinitionGroup>

file

实现调试自动加载【可选】

思路是创建一个 scr 脚本,注明要自动加载的程序(修改向导源码实现自动创建这个 scr 脚本及写入匹配的内容)。再配置调试命令的属性预设,在 CAD 启动时指定要执行的 scr 脚本,实现自动加载程序。

注意:创建的项目所在路径的文件名中不能存在空格,否则会导致无法正常加载。遇到调试出现“找不到指定的图形文件,请确认文件存在”,请检查文件名是否存在空格。

修改向导程序源码

以管理员权限编辑 C:\Program Files (x86)\Autodesk\ObjectARX 2025 Wizards\ArxAppWiz\Scripts\1033\default.js
找到function CreateArxProject,在 return oProj; 前面插入下面代码

    // 创建 scr 脚本
    /////////////////////////////////////////////

    // 写 scr 文件
    function writeScrFile(filename, content)
    {
      var fso = new ActiveXObject("Scripting.FileSystemObject");
      var startScrPath = strProjectPath + "\\" + filename;
      var startScrFile = fso.CreateTextFile(startScrPath, true);
      startScrFile.Write(content);
      startScrFile.Close();
    }

    // 确定程序扩展名
    var extension = "";
    if (wizard.FindSymbol("APP_ARX_TYPE")) {
      extension = ".arx";
    } else if (wizard.FindSymbol("APP_DBX_TYPE")) {
      extension = ".dbx";
    } else if (wizard.FindSymbol("APP_CRX_TYPE")) {
      extension = ".crx";
    } else {
      extension = ".arx";
    }

    debugFilename = "debug.scr"; // 调试版脚本
    releaseFilename = "release.scr"; // 发布版脚本

    var debugContent = "ARX L " + "\"" + strProjectPath + "\\x64\\Debug\\" + wizard.FindSymbol("RDS_SYMB") + strProjectName + extension + "\" ";
    var releaseContent = "ARX L " + "\"" + strProjectPath + "\\x64\\Release\\" + wizard.FindSymbol("RDS_SYMB") + strProjectName + extension + "\" ";

    writeScrFile(debugFilename, debugContent);
    writeScrFile(releaseFilename, releaseContent);
    /////////////////////////////////////////////

file

修改属性模板

以管理员权限编辑 C:\Program Files (x86)\Autodesk\ObjectARX 2025 Wizards\ArxAppWiz\Templates\1033\Autodesk.arx-2025.props

查找关键字“LocalDebuggerCommand”,将其所在的 PropertyGroup 整个代码块替换为下面的

    <PropertyGroup Condition="'$(Configuration)'=='Debug'">
        <!-- Local Windows debugger -->
        <LocalDebuggerDebuggerType>Auto</LocalDebuggerDebuggerType>
        <LocalDebuggerCommand>$(AcadDir)$(AcadExe)</LocalDebuggerCommand>
        <LocalDebuggerCommandArguments>/nologo /b $(ProjectDir)debug.scr</LocalDebuggerCommandArguments>
        <LocalDebuggerWorkingDirectory>$(ProjectDir)</LocalDebuggerWorkingDirectory>
    </PropertyGroup>

    <PropertyGroup Condition="'$(Configuration)'=='Release'">
        <!-- Local Windows debugger -->
        <LocalDebuggerDebuggerType>Auto</LocalDebuggerDebuggerType>
        <LocalDebuggerCommand>$(AcadDir)$(AcadExe)</LocalDebuggerCommand>
        <LocalDebuggerCommandArguments>/nologo /b $(ProjectDir)release.scr</LocalDebuggerCommandArguments>
        <LocalDebuggerWorkingDirectory>$(ProjectDir)</LocalDebuggerWorkingDirectory>
    </PropertyGroup>

file

添加信任

经过上面的修改已经可以实现调试启动 CAD 后自动加载自己编写的程序,但是因为没有签名也不在信任路径,可能导致需要手动确认是否加载
file

需要打开 CAD,op 命令打开选项-》系统-》安全选项
file

把开发路径添加到受信任文件夹,注意如果直接把文件夹路径复制进去,那么就只是信任文件夹下一层的程序,如果还有子目录,那依旧是不信任的,要想目录中所有路径都信任,需要加上三个英文句点
比如 C:\ 就只是信任 C:\ 下的程序,C:\User 下有程序就不是信任的,即不包含子目录
但是如果输入 C:\… ,那么就是信任 C:\ 下及子目录下所有文件
file

开发和使用

ObjectARX 目录树

file

  • classmap:包含一个说明 ObjectARX 类层次结构的AutoCAD绘图
  • docs:帮助文档
  • inc:通用的 ObjectARX 头文件
  • inc-x64:64 位的 ObjectARX 头文件
  • lib-x64:64 位的 ObjectARX 库文件
  • samples:ObjectARX 示例程序
  • utils:扩展 ObjectARX 的子目录

创建项目

file

file

file

调试

直接按F5调试运行,会自动运行 CAD 并加载插件
file

添加成品插件自启动

在 CAD 中处于打开图纸状态,执行 APPLOAD 命令打开加载器,点击公文包图标下的内容按钮
file

点击添加,选中插件文件,询问加载方式选始终加载,以后启动 CAD 也会自动加载
file

AutoCAD 2025 ObjectARX(C++)开发环境搭建
Scroll to top
打开目录