aardio 文档
aardio 范例: AutoCAD:批量工作放进 LISP,减少进程间往返。此例不要求人工输入。
// AutoCAD:批量工作放进 LISP,减少进程间往返。此例不要求人工输入。
import com.cad;
var cad = com.cad();
if(!cad) error("无法连接 AutoCAD");
cad.Visible = true;
if(!cad.IsQuiescent()) error("请先结束 AutoCAD 当前命令");
var doc = cad.Documents.Add();
doc.SetVariable("INSUNITS",com.word(4));
// LoadLisp 支持模板;单个字符串模板参数是原样代码,数据应使用 lispValue 或数组。
cad.LoadLisp(`
(vl-load-com)
(defun c:aardioRow (/ model i item handles)
(setq model (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
i 0)
(repeat <?= owner.count ?>
(setq item (vla-AddCircle model (vlax-3d-point (* i 12.0) 0.0 0.0) 4.0))
(setq handles (cons (vla-get-Handle item) handles) i (1+ i))
)
(princ (reverse handles))
(princ)
)
`,{count=8},doc);
cad.SendCommand("aardioRow",,doc);
// SendCommand 通常同步,但交互/事件上下文可能异步;没有 LISP 业务返回值。
// 不用固定 sleep 或 IsQuiescent 充当此任务的完成回执,不在超时后重放绘图。
// 当前示例打印的句柄在 CAD 命令行中;需要程序化结果与恢复请用
// CreateLispTask / RunLisp,参见 tasks.aardio,不应从命令行文本猜测结果。
// 也不立即追加 ZoomExtents/Regen,避免在异步执行尚未结束时抢先操作。
Markdown 格式