aardio 文档
aardio 范例: AutoCAD 异步启动 aardio EXE;避免两边互相同步等待。
// AutoCAD 异步启动 aardio EXE;避免两边互相同步等待。
// 请复制到独立工程 main.aardio 并发布为 EXE,再运行。
if(_STUDIO_INVOKED) error("请先发布为 EXE 再运行此范例");
import win;
if(_ARGV.fromCad) {
win.msgbox("这是由 AutoCAD 异步启动的 aardio 窗口。CAD 无需等待此窗口关闭。");
return;
}
import com.cad;
var cad = com.cad();
if(!cad) error("无法连接 AutoCAD");
cad.Visible = true;
if(!cad.IsQuiescent()) error("请先结束 AutoCAD 当前命令");
var doc = cad.Documents.Add();
// startapp 的第一个参数为 EXE 路径,第二个参数为它的命令行。
// lispValue 负责 LISP 字符串转义;不要拼成未经转义的源代码。
var code = '(defun c:aardioHello () (startapp ' ++ com.cad.lispValue(io._exepath)
++ ' "/fromCad=1") (princ))';
cad.LoadLisp(code,,doc);
win.msgbox("已提交命令定义。请在这份 CAD 图纸中输入 aardioHello。");
// 原先的 WScript.Exec + StdOut.ReadAll 同步等待范例已改为非阻塞 startapp。
// 若需双向任务协议,应单独设计回执,不能让 CAD 等待 aardio 时,
// aardio 又同步调用 CAD;这会形成循环等待。
Markdown 格式