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

最近更新于 2024-08-13 19:48

基本环境

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

Wizard(项目创建向导(模板))

Wizard 下载的包解压出来,直接运行安装
这里的路径不用管,改了也不生效
file

打开路径 D:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\vcprojects\Autodesk (路径要看实际的VS 安装在哪里,以及是社区版、专业版还是企业版)
分别以管理员权限打开编辑器编辑这两个文件
file

ArxAppWiz2025.vsz 中 [TARGETDIR]ArxAppWiz 改为 C:\Program Files (x86)\Autodesk\ObjectARX 2025 Wizards\ArxAppWiz
file

file

ArxAppWizOMF2025.vsz 中 [TARGETDIR]ArxAppWiz182 改为 C:\Program Files (x86)\Autodesk\ObjectARX 2025 Wizards\ArxAppWiz182
file

file

打开路径 C:\Program Files (x86)\Autodesk\ObjectARX 2025 Wizards\ArxAppWiz\Templates\1033 以管理员权限编辑 Autodesk.arx-2025.props(属性模板)
file
把 AcadDir 处路径改为实际的 AutoCAD 路径(注意路径后加上反斜杠)
file
把 ArxSdkDir 处路径改为 ObjectRAX 解压路径再加上“CDROM1”
file
这里改的两项就对应安装 wizard 时填选的两个路径,但是安装的时候改了也没用,这里直接手动改模板文件,在使用向导创建项目后在项目目录中就有一个 Autodesk.arx-2025.props 文件的副本,用于实际在当前项目中控制调试程序和链接路径。

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

以管理员权限编辑 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

修改默认“注册开发者符号”【可选】

以管理员权限编辑 C:\Program Files (x86)\Autodesk\ObjectARX 2025 Wizards\ArxAppWiz\HTML\1033\default.htm,搜索关键词“RDS_SYMB”,默认值是 “ADSK” 改成自己的标识就行,向导界面只能填写不超过四位,这里修改向导界面代码可以实现预填超过四位,不建议使用符号,可能导致项目没法构建(路径无法识别)
file

填在 VALUE= 里面
file

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

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

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

(1)修改向导程序源码

以管理员权限编辑 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

(2)修改属性模板

以管理员权限编辑 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

(3)添加信任

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

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

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

固定入口源文件名【可选】

按照我的习惯,会把程序的入口函数所在的文件命名为 main(main 函数所在的文件)。而这个 ObjectARX 向导程序创建的模板会把入口源文件名字设置成“项目名.cpp”,如果有和我一样的需求可以这样改。
以管理员身份编辑C:\Program Files (x86)\Autodesk\ObjectARX 2025 Wizards\ArxAppWiz\Scripts\1033\default.js,找到GetTargetName函数
file

strTarget = strProjectName + strName.substr(4, strName.length - 4);

file
中的 strProjectName 改成

"main"

file
这样使用向导创建出来的入口源文件名字就是main
file

测试创建项目

创建

现在在 VS 中可以看到,测试创建一个 ARX 项目
file

框里可以输入自己(开发者)的标识,会携带在最终生成文件的名字中
file

使用

编译

尝试编译创建的模板
file

可以在项目目录中看到生成的 arx 插件
file

测试使用

打开 CAD 并新建图纸,输入 AP 命令回车打开扩展程序加载对话框,在里面找到编译好的插件,测试加载
file

成功加载
file

调试

在 VS 中直接运行调试
file

VS 会启动 CAD,加载插件的操作和上面使用的一样,只是通过 VS 调试的时候可以显示 CAD 的堆栈信息等,也可以在 VS 中打断点,便于调试控制。如果按我上面的说明配置过的,那么可以实现调试自动加载插件,直接测试。

添加成品插件自启动

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

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

添加 AutoCAD Mechanical API (AutoCAD 机械版 API)开发支持【未成功,研究中】

上面的开发配置是针对标准版 CAD 开发的,但是没有机械版特有功能的开发支持。
机械版 API 相当于是在 ObjectARX 基础上扩展的,前提需要先配置好 ObjectARX
下载 AutoCAD Mechanical API:https://aps.autodesk.com/developer/overview/autocad-mechanical
file

下载后解压出来,将四个文件夹移动到 ObjectRAX 所在路径
file

file

以管理员身份编辑C:\Program Files (x86)\Autodesk\ObjectARX 2025 Wizards\ArxAppWiz\Templates\1033\Autodesk.arx-2025.props,找到AdditionalDependencies所在行,改为
(链接 mcadapi_crx.lib 和 acmsymbb_crx.lib)

<AdditionalDependencies>%(AdditionalDependencies);mcadapi_crx.lib;acmsymbb_crx.lib</AdditionalDependencies>
AutoCAD 2025 ObjectARX(C++)开发环境搭建
Scroll to top