aardio 文档

CAD COM + LISP 自动化

com.cad 在原生 CAD COM 对象上提供命令、LISP、模板及接口辅助。不依赖 Autos,也不要求安装 .NET 插件。

先选对接口

最小入门

以下创建新的测试文档,不改动已有文档,不保存覆盖文件。

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")。

文档、实体与坐标

  1. 任务开始时明确取得 doc,执行中不要反复取 ActiveDocument。命令/视图操作可能激活文档。
  2. Documents、ModelSpace 等是 COM 集合:用 Count,索引从 0 开始,不能用 aardio 的 # 代替。
  3. 记录实体身份时保存“文档 + Handle”。不同文档可能有相同句柄。
  4. 明确模型空间/图纸空间、单位与坐标系。AddLine、AddCircle 的点是 WCS 三维点,不能把所有实体接口的坐标都假定为 WCS。
  5. INSUNITS 不是对已有几何的缩放命令;改变单位标记不会自动重画实体。
  6. 批量创建后再统一 Regen、调整视图,避免每个对象都刷新。
  7. 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。

导航

Markdown 格式