中望CAD+API接口应用之Lisp篇
CAD作为大众化的平台软件,基本已经覆盖了全部日常设计中需要的功能,有些时候为了简化一些绘图步骤、提高绘图效率就不得不依靠一些二次开发程序来完成。这里小编以绘制圆的中心线为例,介绍一些中望CAD+中提供的常见Lisp函数的调用方法。
中望CAD+API接口应用之Lisp篇
中心线在我们画图过程中用的非常广泛,我们如果只在CAD平台(不包含任何二次开发软件)中绘制需要好几个步骤才能完成,如果我们编写一个Lisp程序只需要一个命令就可以实现了。关于Lisp的介绍大家可以去网上查看,这里不做详解。强调一点Lisp编写可以十分随意,基本不需要编译环境,word、txt等都可以用来编写,编译完成将扩展名改为.lsp即可。一些基本的库函数我们可以通过中望CAD+帮助菜单的开发人员帮助里面查询。
这里声明一点,我不是搞软件开发的,只是一名普通设计工程师,Lisp编程方面本人是个初学者,如果下面内容有不对的地方还望大家多多指教。写这篇文章主要是想和大家交流经验,以便共同提高。
下面进入正题,我们就来看一下程序是如何实现一步绘制中心线的。
上图是这个程序的源代码,大家可以看到这里面有很多的括号,这就是Lisp的一个特点,这就是为什么也有人叫它括号语言的原因,这里面要特别注意的就是括号一定要匹配,多了或者少了程序都会报错。我简单解释一下上面代码的含义,如果有介绍不清楚的地方大家还是可以去上面提到的开发人员帮助里面查询。
首先第一行里面定义的是这个小程序的开始和命令名字,也就是说我在程序后只要输入ZXX就可以使用这个程序了。后面的一对括号是用来定义后面变量的类型用的,这个后面有机会再详解,这个对新手来说可以暂时不考虑。
第二行是赋值函数和选择函数的联用,将选择的圆赋值给temp(自定义的变量)
第三行获取圆的构成信息,例如图层、圆心、半径、颜色等等。
第四行、第五行得到圆心、半径,方便下一步画中心线。
第六行、第七行才是真正的程序目的:开始画线。
第八行采用静默方式退出。
这样几行简单的代码就实现了中心线绘制,里面主要用的setq-赋值函数,command-执行命令函数(相当于我们在CAD命令行直接输入命令),polar-相当于CAD里面的角度+长度的相对坐标,“+”-运算符,即加法,其余的不一一列举了,大家去帮助里面查询吧。这只是一个简单实例,为了完善它我们还可以在画线前建立相关图层、图层跳转等,这些都可以用command来调用相关命令实现。
程序写好了可以在CAD里面加载验证,方法也很简单,可以把程序直接拖放到绘图区加载(老版本中望CAD拖放到命令行),也可以通过ap命令采用对话框方式加载,后一种还有一点好处就是可以把常用程序加载启动组里面,这样开软件不用加载了。
程序执行后的结果。
我们先来看一下改进后的程序的效果再来分析所用的新函数。
我们通过上图可以看出来,我们待选择对象有很多的种类包括:圆、直线、圆弧、多段线,那么我们怎么才能通过框选只选择圆而排除其他对象呢,这里面用到了一个选择集的函数ssget,送过给这个函数添加过滤条件这可以来实现对象的分类选取。
批量生成一般我们都要通过循环函数来实现,这里引用While函数。
图层可以通过command函数直接调用-Layer命令,用后台运行的方式创建图层。
输入数值采用getreal函数键盘输入。
当然实现一个功能可以有很多的途径,比如本例中输入函数也可以选择getint,具体区别可以在帮助中看到,希望大家可以通过一个函数学习到一类函数的应用,这样才能事半功倍。
这个程序相对于上一版主要是添加了选择集函数,首先通过框选创建一个选择集,过滤条件是“circle”,然后测量选择集中对象的数量(即有多少个圆),然后进入循环,从选择集中第一个对象(编号是0)开始记录信息直到生成中心线(这个和改动前的程序原理一样),开始判断进入下一个循环,直到循环数超过了选择集中对象数量循环结束。这样一个自动批量生成中心线的程序就做好了。
以上可以看出在中望CAD+里写一些小程序其实并不困难,这里面用到了一些函数都是很常见的函数,往往就是这些常见函数就能解决我们工作中的大问题。这里面介绍的都是Lisp的一些入门级的知识,只会这些是远远不够的,希望广大的CAD设计师、爱好者也能积极的分享设计经验,大家一起相互提高。