最近更新于 2025-03-16 21:16
基本环境
AutoCAD 机械版 2025
Visual Studio 2022(需要安装“C++ 桌面开发”,建议右侧手动增加勾选“MFC”)
开发环境
下载
百度网盘
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
(2)ObjectARX Wizard 下载(项目创建向导):https://aps.autodesk.com/developer/overview/autocad
直接下载地址:https://github.com/ADN-DevTech/ObjectARX-Wizards/raw/ForAutoCAD2025/ObjectARXWizardsInstaller/ObjectARXWizard.zip
安装
SDK
SDK 下载的是一个自解压程序,自定义解压路径,注意记住路径,后面要用
Wizard
Wizard 下载的包解压出来
以管理员身份运行 powershell
输入安装文件的绝对路径,通过 powershell 间接实现管理员运行安装程序,点 Next进入下一步
分别填写默认符号(自定义)、ObjectArx 路径、CAD 路径
这里的符号特别注意不要输入标点符号之类的,否则创建项目的时候会关联进代码,导致错误
手动修改项
禁用安全检查(属性预设)【可选】
以管理员权限编辑 C:\Program Files (x86)\Autodesk\ObjectARX 2025 Wizards\ArxAppWiz\Templates\1033\Autodesk.arx-2025.props
不想用 VS 自创的安全函数,又不想手动禁用就这里直接改模板
在 Project 层内找到一个空位置,插入下面内容
<ItemDefinitionGroup>
<ClCompile>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
</ItemDefinitionGroup>
禁用较小类型检查(属性预设)
VS 中 Debug 默认开启了较小类型检查
可能会导致报错/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>
实现调试自动加载【可选】
思路是创建一个 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);
/////////////////////////////////////////////
修改属性模板
以管理员权限编辑 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>
添加信任
经过上面的修改已经可以实现调试启动 CAD 后自动加载自己编写的程序,但是因为没有签名也不在信任路径,可能导致需要手动确认是否加载
需要打开 CAD,op 命令打开选项-》系统-》安全选项
把开发路径添加到受信任文件夹,注意如果直接把文件夹路径复制进去,那么就只是信任文件夹下一层的程序,如果还有子目录,那依旧是不信任的,要想目录中所有路径都信任,需要加上三个英文句点
比如 C:\ 就只是信任 C:\ 下的程序,C:\User 下有程序就不是信任的,即不包含子目录
但是如果输入 C:\… ,那么就是信任 C:\ 下及子目录下所有文件
开发和使用
ObjectARX 目录树
- classmap:包含一个说明 ObjectARX 类层次结构的AutoCAD绘图
- docs:帮助文档
- inc:通用的 ObjectARX 头文件
- inc-x64:64 位的 ObjectARX 头文件
- lib-x64:64 位的 ObjectARX 库文件
- samples:ObjectARX 示例程序
- utils:扩展 ObjectARX 的子目录
创建项目
调试
直接按F5
调试运行,会自动运行 CAD 并加载插件
添加成品插件自启动
在 CAD 中处于打开图纸状态,执行 APPLOAD 命令打开加载器,点击公文包图标下的内容按钮
点击添加,选中插件文件,询问加载方式选始终加载,以后启动 CAD 也会自动加载