前段时候中望公司发布了新一代拥有全新内核的产品:中望CAD+,作为一个国产CAD软件的支持者,我进行了下载测试,使用过后确实有了耳目一新的感觉,新功能方面有很多朋友已经做了深入的评测,我就不凑热闹了,这里我想针对软件的API接口方面发表一点自己的看法。新版本中望CAD+接口方面改善比较明显,除了函数库的扩充,接口兼容性也增强了很多,这对于部分老软件的挂接无疑是个好消息。 CAD作为大众化的平台软件,基本已经覆盖了全部日常设计中需要的功能,有些时候为了简化一些绘图步骤、提高绘图效率就不得不依靠一些二次开发程序来完成。这里我以绘制圆的中心线为例,介绍一些中望CAD+中提供的常见Lisp函数的调用方法。 中心线在我们画图过程中用的非常广泛,我们如果只在CAD平台(不包含任何二次开发软件)中绘制需要好几个步骤才能完成,如果我们编写一个Lisp程序只需要一个命令就可以实现了。关于Lisp的介绍大家可以去网上查看,这里不做详解。强调一点Lisp编写可以十分随意,基本不需要编译环境,word、txt等都可以用来编写,编译完成将扩展名改为.lsp即可。一些基本的库函数我们可以通过中望CAD+帮助菜单的开发人员帮助里面查询。
% h. o* X; L6 D, }1 Q& j* Q* X
# I" Y; C7 N2 X$ p
- V. L3 B4 a% I( M; x, A2 o$ ^# W& q k5 S6 v M3 k& H( [# K0 T
这里声明一点,我不是搞软件开发的,只是一名普通设计工程师,Lisp编程方面本人是个初学者,如果下面内容有不对的地方还望大家多多指教。写这篇文章主要是想和大家交流经验,以便共同提高。 下面进入正题,我们就来看一下程序是如何实现一步绘制中心线的。 - \; ?" m4 Z* y- R2 q/ }* e
8 \) e5 m% g% n# R: n5 B
- d' g) Q- c; _& s! D# z; F, N2 n: R* x9 l+ }+ Z% E
上图是这个程序的源代码,大家可以看到这里面有很多的括号,这就是Lisp的一个特点,这就是为什么也有人叫它括号语言的原因,这里面要特别注意的就是括号一定要匹配,多了或者少了程序都会报错。我简单解释一下上面代码的含义,如果有介绍不清楚的地方大家还是可以去上面提到的开发人员帮助里面查询。 首先第一行里面定义的是这个小程序的开始和命令名字,也就是说我在程序后只要输入ZXX就可以使用这个程序了。后面的一对括号是用来定义后面变量的类型用的,这个后面有机会再详解,这个对新手来说可以暂时不考虑。 第二行是赋值函数和选择函数的联用,将选择的圆赋值给temp(自定义的变量) 第三行获取圆的构成信息,例如图层、圆心、半径、颜色等等。 第四行、第五行得到圆心、半径,方便下一步画中心线。 第六行、第七行才是真正的程序目的:开始画线。 第八行采用静默方式退出。 这样几行简单的代码就实现了中心线绘制,里面主要用的setq-赋值函数,command-执行命令函数(相当于我们在CAD命令行直接输入命令),polar-相当于CAD里面的角度+长度的相对坐标,“+”-运算符,即加法,其余的不一一列举了,大家去帮助里面查询吧。这只是一个简单实例,为了完善它我们还可以在画线前建立相关图层、图层跳转等,这些都可以用command来调用相关命令实现。 程序写好了可以在CAD里面加载验证,方法也很简单,可以把程序直接拖放到绘图区加载(老版本中望CAD拖放到命令行),也可以通过ap命令采用对话框方式加载,后一种还有一点好处就是可以把常用程序加载启动组里面,这样开软件不用加载了。
$ v$ _5 B) n2 C* }0 B, G8 f
( [/ f6 B, j. R/ M3 J1 d- Y
4 q4 k& j1 o* h/ p, d
9 P5 k) l) V) ]% p0 {: n( A/ Q3 r程序执行后的结果。
7 _: U# t6 R" j i* z# u
6 y! o* J$ I% I6 F5 W$ O7 [7 y7 K! e2 ~3 h+ F
9 F: j, {+ ^) Q1 b 这样我们一步式生成中心线的目的就达到了,但是程序还存在很多的不足,例如选择对象只能是圆(非圆对象会出错)、不能批量生成、超出圆的长度不可调等等,后面会根据现存问题来调整程序,详见:中望CAD+API接口应用之Lisp篇(二)。以上是我在中望CAD+中学习的心得,希望可以起到抛砖引玉的作用,也希望大家工作之余能多多关注国产软件的成长,一起支持国产软件。 |