aardio 文档

aardio 范例: 调用 AutoCAD - 加载 LISP 代码

//aardio 调用 AutoCAD - 加载 LISP 代码
import com.cad;
var cad = com.cad();
cad.ShowForeground();//前置并显示窗口

//加载 LISP 代码或者 LSP 文件。 
//支持模板语法: https://www.aardio.com/zh-cn/doc/language-reference/templating/syntax.html
cad.LoadLisp(`
(setq c:hello nil)
(defun c:hello(/ name)
(set 'name (getstring "What's your name? "))
(set 'msg (strcat "Hello, " name <?= 

    /*
    支持模板语法: https://www.aardio.com/zh-cn/doc/language-reference/templating/syntax.html

    LISP 模板由 com.cad.loadcode() 函数解析,
    转换规则如下:

    一、如果 aardio 输出非空数组或多个参数 ,
        所有参数按以下规则转换为字符串。

        1、数值直接输输出,flase 转为 nil ,true 转为 T
        2、数组或嵌套的数组参数都会转换为 LISP 表(首尾有括号), 
           如果 cons 字段为 true 则转换为点对(首尾有括号)。
        3、包含 car,cdr 成员的表会转换为点对(首尾有括号)。
           其他名值对转换为关联列表。
        4、其他类型统一调用 tostring() 转换为字符串,
        然后按 LISP 语法进行转义,首尾加双引号。 

        最后将所有参数以空格分开输出到 LISP 代码(首尾不加括号)

    二、单个表参数为包含 car,cdr 成员的表会转换为点对(首尾有括号)。
        如果表参数为其他名值对则转换为关联列表(首尾有括号。

    三、其他单个参数直接转为字符串并置入 LISP 代码。
    */
    tostring(time()),"这是 aardio 对象" 
?>))
(write-line msg))`,/*可选用 参数@2 指定模板 owner 参数*/);

//执行 AutoCAD 里所有命令以及 AutoLISP 表达式,跟在 AutoCAD 里敲命令效果一样。
cad.SendCommand("hello");

//cad.SendCommand 同样支持模板语法。
//aardio 表转 LISP 点对,首尾自动加括号
//cad.SendCommand(`(print '<?= { car = "点对 car"; cdr = "点对 cdr" } ?> )` );

//aardio 数组输出为 LISP 列表,首尾不会自动加括号
//cad.SendCommand(`(print '(<?= {1,2,3,{"嵌套"}} ?>) )` );

/*
cad.SendCommand 是同步执行命令,
如果要异步执行命令请使用 cad.PostCommand 
*/ 
Markdown 格式