com.cad 在原生 CAD COM 对象上提供命令、LISP、模板及接口辅助。不依赖 Autos,也不要求安装 .NET 插件。
cad.Preview(handles,doc,options),复用标准库原生导出和视图恢复。图像和几何数据分别验收。com.cad.callRetry 只处理已识别拒绝,用于只读查询或单个可重试调用,不包装多步写操作。未知结果先查原任务;同步队列刷新默认禁用。以下创建新的测试文档,不改动已有文档,不保存覆盖文件。
import com.cad;
var cad = com.cad();
if(!cad) error("无法连接或启动 AutoCAD");
cad.Visible = true;
if(!cad.IsQuiescent()) error("请先结束 CAD 当前命令或对话框");
var doc = cad.Documents.Add();
var circle = doc.ModelSpace.AddCircle([0,0,0],10);
doc.Regen(cad.acAllViewports);
cad.ZoomExtents();
print({document=doc.Name;handle=circle.Handle;radius=circle.Radius});
com.cad() 默认连接已有 AutoCAD 实例,否则尝试创建;也保留 GStarCAD、ZWCAD 候选退化。不同 CAD 产品的功能、命令及版本差异仍需实测。只希望连接已有实例时使用 com.cad(false);指定产品用 com.cad(false,"ZWCAD.Application")。
doc,执行中不要反复取 ActiveDocument。命令/视图操作可能激活文档。Documents、ModelSpace 等是 COM 集合:用 Count,索引从 0 开始,不能用 aardio 的 # 代替。AddLine、AddCircle 的点是 WCS 三维点,不能把所有实体接口的坐标都假定为 WCS。INSUNITS 不是对已有几何的缩放命令;改变单位标记不会自动重画实体。Regen、调整视图,避免每个对象都刷新。Save、SaveAs、Close(false)、Quit 具有持久化或丢弃数据的效果,应取得明确授权。范例不自动保存、不自动退出 CAD。普通数值数组默认转为 double SAFEARRAY。单个整数默认转为 32 位整数,某些 CAD 变量要求 16 位整型,必须用 com.word;需要 Double 时使用 com.double。COM 对象数组可用于 AppendOuterLoop。
填充边界应先准备好,再 AddHatch,随后立即 AppendOuterLoop,之后才设置其他属性并 Evaluate。ANSI31 应使用预定义填充类型 1。
cad.Inspect()、cad.Selection(doc)、cad.Summary(doc)、cad.Preview(handles,doc) 是普通标准库能力,不依赖 Autos。技能通过同一个增强实例调用;COM产品差异集中在 com.cad,执行与回执集中在 com.cad.task。
com.cad 提示打开。范例 → COM 组件 → AutoCAD;无交互入门、任务执行、填充和图像导出优先,netload.aardio 演示统一 C# 编译入口;WM_COPYDATA 属兼容路线。vla.aardio 保留 Visual LISP COM 函数接口、表达式转换和模板用法,适合人类程序员学习;RunLisp.aardio 演示批量读取数据与结构化回执,适合 AI 自动化。两者用途不同,不互相替代。