AutoCAD .NET API 必须在 ObjectARX 宿主环境中运行,不能直接在控制台或 WinForms 中调用;需通过 netload 加载强签名 DLL,以 CommandMethod 标记命令入口,Attach 到 acad.exe 调试,并严格匹配 AutoCAD 版本与 SDK。AutoCAD .NET API 必须用 ObjectARX 宿主环境运行直接在普通控制台或 WinForms 项目里调用 Autodesk.AutoCAD.ApplicationServices.Core.Application 会抛出 System.NullReferenceException 或 Autodesk.AutoCAD.Runtime.Exception: eNotApplicable ------ 因为这些类不是独立库,而是 AutoCAD 进程内托管扩展的入口门面。必须通过 AutoCAD 加载 DLL:把程序集放在支持路径(如 Acad.exe 同级的 Support 文件夹,或注册到 acad.lsp 的 (netload) 路径)入口点只能是标记 CommandMethod 的静态方法,不能靠 Main() 启动调试必须 Attach 到正在运行的 acad.exe 进程,不能直接 F5 运行目标框架严格匹配 AutoCAD 版本:2021--2024 对应 .NET 5/6/8,但需用对应版本的 AutoCAD.NET SDK NuGet 包(如 AutoCAD.NET.2024),混用会报 Could not load file or assemblyCommandMethod 参数决定命令可见性与执行上下文CommandMethod 不只是"让函数变命令",它的字符串参数控制命令是否出现在命令行、是否支持透明调用、是否允许在块编辑器中运行。CommandMethod("MyCmd"):命令行输入 MyCmd 可触发,但不支持透明(如不能在画线中途输入)CommandMethod("MyCmd", CommandFlags.Transparent):支持透明调用,但此时 Application.DocumentManager.MdiActiveDocument 可能为 null,需先检查CommandMethod("MyCmd", CommandFlags.UsePickSet):自动继承当前选择集,避免重复调用 Editor.SelectAll()多个同名命令会冲突;不同组别可用 CommandMethod("Group1", "MyCmd") 隔离,命令行仍输 MyCmdDocument.Transaction 和 Editor.GetSelection 的坑最多事务(Transaction)不是数据库事务,它和 Editor 实例强绑定于当前文档上下文。常见错误是跨文档操作或在事务外读取实体属性。 Adobe Image Background Remover Adobe推出的图片背景移除工具
相关推荐
一个天蝎座的程序猿29 分钟前
传统数据库迁金仓KES,空值问题差点让财务报表翻车wWYy.1 小时前
Mysql:索引下推天天爱吃肉82181 小时前
【重磅发布:拿下新超仁达代理权 】神王宝宝 王者小学1 小时前
面向领域驱动架构的查询实现方式风123456789~2 小时前
【Oracle专栏】ORA-02069: global_names 参数ningmengjing_2 小时前
Redis 从入门到实战:Python操作全攻略️学习的小王2 小时前
智能文档助手:基于RAG的本地化文档问答系统实战指南不瘦80斤不改名3 小时前
05-vibe-coding-向agentic-engineering演进笨鸟先飞,勤能补拙3 小时前
AI 安全的下一个 5 年:从 Agent 到 AGI 的攻防博弈