aardio 文档

com.cad 库模块帮助文档

模板语法

com.cad.sendCopyData 函数 以及 com.cad 对象的 LispExp,SendCommand 函数 支持模板语法

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

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

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

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

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

三、其他单个参数直接转为字符串并置入 LISP 代码。

com 成员列表

com.cad()

获取已存在的 AutoCAD 实例,或创建新的 AutoCAD 实例。
兼容 32 位 / 64 位 AutoCAD。

返回对象:ComCadObject

com.cad 成员列表

AutoCAD 支持库。
兼容 32 位 / 64 位 AutoCAD

com.cad.list(array)

aardio 数组转换为 LISP 表代码,
参数 @2 为 true 时首尾不添加括号

如果 car,cdr 字段不为 null 且不含数组成员,
或包含数组成员,但 cons 字段为 true,
则返回点对,点对总是在首尾添加括号。
其他名值对转换为关联列表。

com.cad.loadcode()

加载 aardio 模板代码返回 LISP 代码,
可指定多个模板参数

com.cad.sendCopyData(hwnd,data,args,dataType)

用 _WM_COPYDATA 向 AutoCAD 窗口发送数据。
@hwnd 为 AutoCAD 主窗口句柄,
@data 为 需要发送的字符串,发送命令时支持模板语法,
@args 发送命令时,可选用这个参数指定@data 使用的模板参数,
@dataType 省略时默认值为1,为 1 表示发送到 AutoCAD 命令窗口并执行该命令。
发送成功返回1,否则返回0

ComCadDocObject 成员列表

ComCadDocObject.Activate()

激活文档

ComCadDocObject.Close(saveChanges,filename)

关闭文档
可选用 @saveChanges 指定是否保存更改。
@filename 的綻文件路径,建议用 io.fullpath 转换为完整路径

ComCadDocObject.GetVariable(name)

获取系统变量值

ComCadDocObject.Name

名称,只读

ComCadDocObject.Path

路径,不含文件名

ComCadDocObject.ReadOnly

是否只读模式

ComCadDocObject.Save()

保存文档

ComCadDocObject.SaveAs(fileName,fileType,securityParams)

保存文件
@fileName 指定文件路径,请用 io.fullpath 先转换为完整路径。
@fileType 指定保存类型(枚举类型 AcSaveAsType ),
└── 可用 console.dump 列出 COM 对象枚举类型的可用名值对
└── 枚举名可作为 COM 对象的成员名获取枚举值
@securityParams 为可选参当,用法请参考 AutoCAD 文档

ComCadDocObject.Saved

是否已保存所有更改

ComCadDocObject.SetVariable(name,value)

设置系统变量值,
@name 指定变量名,@value 变量值,值的类型一定要匹配,
VBA里的 Integer 类型 0 在 aardio 中要写为 com.word(0),
VBA里的 Double 类型 0 在 aardio 中要写为 com.double(0)

ComCadDocObject.WindowState

文档状态,可读写。
通过此对象的成员名字可获取此属性可用的 COM 常量值:
acMin 窗口为最小化
acMax 窗口为最大化
acNorm 窗口为常规窗

ComCadLspFunctionsObject 成员列表

ComCadLspFunctionsObject.?

请指定需要调用的 Visual LISP 函数名,
如果函数名包含横线等,也可以使用下标操作符,例如["函数名"]

ComCadLspFunctionsObject.eval()

计算并返回参数 @1 指定的 LISP 表达式的值

ComCadLspFunctionsObject.read()

读取字符串参数 @1 指定的 LISP 代码
返回第一个表或第一个原子

ComCadLspFunctionsObject.vl 成员列表

ComCadLspFunctionsObject.vl.?

请指定需要调用的 Visual LISP 函数名(自动添加 "vl-" 前缀)。

ComCadLspFunctionsObject.vl.cmdf("commandline")

调用 vl-cmdf 函数执行命令。
通过此接口只能调用 vl-cmdf 执行命令,调用 command 是无效的。

ComCadObject 成员列表

ComCadObject.ActiveDocument

当前活动文档,可读写属性

返回对象:ComCadDocObject

ComCadObject.Application

应用程序对象

ComCadObject.Eval()

计算 VBA 表达式

ComCadObject.GetAcCmColor()

获取 AutoCAD 进程内颜色管理对象

ComCadObject.GetAcadState().IsQuiescent

AutoCAD 当前是静止状态

ComCadObject.GetCadInterfaceObject()

使用参数指定的 ProgID 在 AutoCAD 进程内加载 AutoCAD 提供的 COM 对象,
与 GetInterfaceObject 不同的是 GetCadInterfaceObject 会在参数后自动添加当前主版本号

ComCadObject.GetInterfaceObject()

使用参数指定的 ProgID 在 AutoCAD 进程内加载 COM 对象

ComCadObject.GetLayerStateManager()

获取 AutoCAD 进程内图层管理器对象

ComCadObject.GetLispFunctions()

获取活动文档 Visual LISP 函数列表。
可通过调用返回对象的成员函数调用 LISP 函数。

返回对象自身可作为生成 LISP 表达式的函数使用:
参数可指定 aardio 数组或多个参数;
也可以指定包含 car,cdr 字段的表,用于返回点对;
参数为一个字符串时,作为 LISP 代码读取并返回表
已知限制:
1、此接口加载的 LISP 代码无法调用 command 命令
2、AutoCAD 这个接口不太稳定,调用某些函数偶尔会出现

返回对象:ComCadLspFunctionsObject

ComCadObject.GetSecurityParams

获取 AutoCAD 进程内安全参数对象

ComCadObject.HWND

窗口句柄

ComCadObject.LispExp()

读取并执行字符串中的第一个 LISP 表达式,此函数无返回值。
参数@1支持 aardio 模板语法,其他参数为模板参数。
aardio 模板语法
aardio 模板中非数值、非布尔值一律转字符串,
一次输出多个模板参数或数组时,字符串自动转义并加引号,多参数以空格分开。
已知限制:
1、此接口加载的 LISP 代码无法调用 command 命令
2、AutoCAD 这个接口不太稳定,调用某些函数偶尔会出现

ComCadObject.ListARX()

获取已加载的 ARX 应用程序

ComCadObject.LoadARX()

加载参数@1指定的 ARX 应用程序

ComCadObject.LoadDVB()

加载 .dvb 工程,无返回值。
参数 @1 指定 .dvb 工程文件路径。

工程中名为 AcadStartup 的宏将自动运行。

ComCadObject.LoadLisp

加载 LISP 代码。
参数支持[aardio 模板语法]https://www.aardio.com/zh-cn/doc/language-reference/templating/syntax

ComCadObject.LoadLisp(lisp,args,doc)

加载 LISP 代码。
参数@1可以是文件、资源文件、或 LISP 代码,
支持 aardio 模板语法,可选用 @args 参数指定模板 owner 参数,
可选用参数 @3 自定义执行此函数的文档对象。

已加载的 LISP 代码无法卸载,可通过赋值 nil 删除定义的函数。

ComCadObject.LoadLispFile

加载 *.lsp 代码文件

ComCadObject.LoadLispFile(path,doc)

加载 *.lsp 代码文件,
参数@1指定 *.lsp 代码文件路径,
可选用参数 @2 自定义执行此函数的文档对象

ComCadObject.MajorVersion()

AutoCAD 主版本号,数值。
例如 AutoCAD 2022 主版本号为 24。

ComCadObject.MajorVersionString()

AutoCAD 主版本号,字符串值。
例如 AutoCAD 2022 主版本号为 24。

ComCadObject.NetCompiler("C#")

使用当前线程默认应用程序域创建 C# 编译器。
需要先导入 dotNet 库

ComCadObject.NetCompiler()

返回对象:dotNetCompilerObject

ComCadObject.NetLoad

加载 .Net DLL。
退出 AutoCAD 进程时自动卸载,没有卸载函数

ComCadObject.NetLoad(path,doc)

加载 .Net DLL,
参数@1指定 *.dll 文件路径,
可选用参数 @2 自定义执行此函数的文档对象

ComCadObject.Path

AutoCAD 安装目录

ComCadObject.PostCommand

异步发送 AutoCAD 命令
参数支持 aardio 模板语法

ComCadObject.PostCommand(cmd,args,doc)

异步发送 AutoCAD 命令,
参数@1可以是文件、资源文件、LISP 表达式、命令,
每句命令应以空格或回车结束,
尾部的回车可省略

支持 aardio 模板语法,模板中非数值、布尔值一律转字符串,
一次输出多个模板参数时,字符串自动加引号,多参数自动以空格分开,
可选用 @args 参数指定模板 owner 参数,
可选用参数 @3 自定义执行此函数的文档对象

ComCadObject.Quit()

退出应用程序

ComCadObject.RunMacro()

运行 VBA 宏,无返回值。
参数 @1 指定宏路径,格式: [Filename.dvb.][ProjectName.][ModuleName.]MacroName
这里的中括号是可选的意思。
Filename.dvb与ProjectName要用感叹号分开,例如 "Filename.dvb!ProjectName"。

如果没加载 dvb 则会自动加载,如果未指定路径则自动搜索查找文件件。
如果未指定 ProjectName,则在加载项目中查找宏。

ComCadObject.SendCommand

同步发送 AutoCAD 命令
参数支持 aardio 模板语法

ComCadObject.SendCommand(cmd,args,doc)

同步发送 AutoCAD 命令,
参数@1可以是文件、资源文件、LISP 表达式、命令,
每句命令应以空格或回车结束,
尾部的回车可省略

支持 aardio 模板语法,模板中非数值、布尔值一律转字符串,
一次输出多个模板参数时,字符串自动加引号,多参数自动以空格分开,
可选用 @args 参数指定模板 owner 参数,
可选用参数 @3 自定义执行此函数的文档对象

ComCadObject.SendCopyData(data,args,dataType)

用 _WM_COPYDATA 向 AutoCAD 窗口发送数据。
@data 为 需要发送的字符串,发送命令时支持模板语法,
@args 发送命令时,可选用这个参数指定@data 使用的模板参数,
@dataType 省略时默认值为1,为 1 表示发送到 AutoCAD 命令窗口并执行该命令。
发送成功返回1,否则返回0

ComCadObject.ShowForeground()

前置并显示 AutoCAD 窗口。

ComCadObject.UnloadARX()

卸载参数@1指定的 ARX 应用程序

ComCadObject.UnloadDVB()

卸载 .dvb 工程,无返回值。
参数 @1 指定 .dvb 工程文件路径。

ComCadObject.VersionString()

AutoCAD 版本号,字符串值。
例如 AutoCAD 2022 版本号为 "24.1s (LMS Tech)"。
可用 fsys.version 解析与比对版本号。

ComCadObject.Visible

是否显示 AutoCAD 窗口。
此值建议设置为 true 以显示窗口,
不显示窗口有些功能可能用不了。

ComCadObject.vbaEnabled()

是否启用 VBA 。

ComCadObject.Documents 成员列表

当前文档数组,不显示窗口可能为 null。
这是通过 COM 接口访问的类数组对象,起始下标为 Documents[0] 而不是 Documents[1],
只能使用 Count 获取数组长度,不能用 # 操作符获取数组长度

ComCadObject.Documents.?

返回对象:ComCadDocObject

ComCadObject.Documents.Add()

文加文档,返回文档对象

返回对象:ComCadDocObject

ComCadObject.Documents.Count

打开文档总数

ComCadObject.Documents.Open()

返回对象:ComCadDocObject

ComCadObject.Documents.Open(fileame,readOnly,password)

打开文件,返回文档对象。
@filename 指定文件路径,建议用 io.fullpath 转换为完整路径。
可选参数 @readOnly 指定是否以只读模式打开。
可选用参数 @password 指定密码

ComCadObject.TextStyles 成员列表

文本样式集合。

ComCadObject.TextStyles.Count

文本样式总数

ComCadObject.TextStyles.Item()

获取文本样式,参数 @1 指定索引。

Markdown 格式