cad二次开发秘技:visualLisp多文件选择
VisualLisp是autoCAD提供的一种简单方便的二次开发语言。语言本身简单易学,功能却极其强大,几乎可以涉及到CAD操作的方方面面。autoCAD还贴心地为这种二次开发语言提供了开发和调试界面,用户只需要在命令行输入VLIDE命令即可打开Vlisp编程界面进行CAD二次开发。
除此之外,它最大的优点还在于其跨版本,跨系统能力超强。同样的Lisp代码,无需修改即可在十几个版本的CAD上流畅运行,这点甚至是强大的ObjectArx也无法比拟的,这也是vLisp成为广大工程师喜爱的CAD二次开发语言的重要原因。
vLisp具有方便地文件读写功能,但是要读写文件,必须要先选择文件,今天我们就来总结一下Vlisp文件选择的实现方法,附带笔者开发的一种多文件选择实现方案。
方法1:Vlisp自带的文件选择函数getfiled
该函数使用说明如下:
(getfiled 对话框的标签 缺省文件名 缺省的文件扩展名 按位编码)
如:(getfiled "123" "" " 32),触发的函数界面如下:
该方法为vLisp内置函数,好处是稳定,可选参数较多。缺点是只能一次选择一个文件,且无法选择文件夹。
方法2:调用Windows系统的Shell.Application进行文件夹选择
该方法的关键代码有以下两句:
(setq winshell (vlax-create-object "Shell.Application"))
(setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
效果如下:
这种方法的优点在于可以选择文件夹,但是生成的窗口有可能会跑到CAD窗口背后去,造成不便。
方法3:调用外部exe,笔者独创方法
这种方法灵活性比较高,但是需要开发者至少会一种别的语言。其原理为:
Lisp调用外部exe->>外部exe弹出文件选择对话框-->>Lisp获取外部exe的选择结果。
在这里,笔者利用国产编程语言aardio生成了一个多文件选择对话框的exe文件,在lisp中利用WScript.Shell获取exe运行的返回值。值得注意的是,这种Lisp与外部exe交换数据的方式目前笔者还没有在别的地方见到过,不知道可否算得上是独创。运行效果如下:
除了以上3种,当然还有别的方法可以实现vLisp中实现文件选择对话框,各位读者可以多多探索。
欲获取文章相关的所有源代码文件,请关注公众号并后台回复“选文件”。
如果觉得这篇文章帮到了您,请点“在看”。欢迎关注,分享,本公众号会持续分享建筑结构参数化的干货内容。

工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP
