AutoLisp编写工程地质剖面图小工具

《AutoLisp编写工程地质剖面图小工具》由会员分享,可在线阅读,更多相关《AutoLisp编写工程地质剖面图小工具(5页珍藏版)》请在文档大全上搜索。
1、AutoLisp编写工程地质剖面图小工具朱红雷 李健民 (浙江省水利水电勘测设计院 杭州 310002)在我院应用的CAD工程地质制图系统中,通常接受的各种高级语言编制的程序,一般是通过编制数据文件,生成CAD图形数据交换文件(一般为*.SCR或*.DXF)达到绘制CAD图纸的目的。这种方法往往显得不符合我们的绘图习惯,也很不直观。为此,我们利用AutoLisp语言开发绘制工程地质剖面图组件,在实际应用中取得了较好的效果。其实,绘图过程就是各种工程地质剖面图组件的拼接过程。一幅工程地质剖面图,一般而言不外乎以下几个组件:图幅图签、剖面图框架(如标尺、桩号等)、勘探信息(如钻孔、平硐等)、地质构
2、造、图例花纹、各种地质线条等。如果我们分别对不同组件编写不同的绘制工具,并把他们有机地、相互关联地放置在一起,就绘制出了一幅工程地质图纸。因此,开发出一套绘制各种工程地质组件的程序,具有肯定的有用价值。AutoLisp语言内嵌于AutoCAD,编写的小程序可以便利地在 AutoCAD界面下进行人机对话。例如下列程序代码段通过输入几个数据即可实现绘制一个简洁的钻孔。(defun c:zk()(setq pt0 (getpoint "/n请输入钻孔位置:")(setq blc (getreal "/n请输入比例尺:")(steq ks (getreal &q
3、uot;/n请输入孔深(m):")(setq ksx (* (/ ks blc) 1000)(setq pt1 (list (- (car pt0) 0.5) (cadr pt0)(setq pt2 (list (- (car pt0) 0.5) (- (cadr pt0) ksx)(setq pt3 (list (+ (car pt0) 0.5) (- (cadr pt0) ksx)(setq pt4 (list (+ (car pt0) 0.5) (cadr pt0)(command "PLINE" pt1 pt2 pt3 pt4 "")
4、我们在用AutoLisp编制上述小工具时,遇到了一些问题,也有些心得体会,愿与大家沟通,权作抛砖引玉。1 常用数据应建立磁盘文件进行保存,如工程名称、比例尺、剖面方向等,需要在不同的Autolisp甚至于不同的图纸间通用,因此需建立磁盘文件进行保存。相关的函数有read-line、wrtie-line等进行磁盘读写操作;rtos、atof等进行数值与字符串的转换。2 尽量应用表格进行编写,可以使程序简洁并增加可读性。事实上,一个AutoLisp程序本身就是一个表或若干表的集合。而各种数据组成的表又是AutoLisp的数组,在某种程度上,这种表比其它高级语言的数组更容易操作,由于AutoLisp
5、供应了丰富的表操作语言,如(subst newitem olditem list);从list表中搜寻olditem并以newitem代替。(reverse list);返回元素被倒置后的list表等等。而且AutoLisp在获得实体信息时就是以表的形式进行存放的;在编写节理玫瑰图、绘制岩土层代号、猎取钻孔信息等都会用到各种结构的表。3 应用Setvar、getvar转变AutoCAD系统变量。如在某些应用中,由于OSNAP、ORTHO等的状态对图形绘制有加大影响。修改系统变量,程序结束时再改回去,这是一种很好的编程习惯。4 建立下拉菜单和图标菜单。大量的工具编写完成后,可以组织编写一个图标菜
6、单,应用时就显得特别便利。下拉菜单的编写比较便利,r12版修改Acad.mnu,R14版修改Acad.mns,一般就是增加一段pop代码即可。图标菜单也大同小异,但除了增加一段icon代码,还需绘制图标。绘制图标可用各种栅格图象编辑器,建议还是用AutoCAD R14版内置的图标编辑器比较便利。简略操作是:把光标移动到ACAD的图标菜单上,点击鼠标右键,选择编辑,把一个个彩色的点拼成图形即可,在绘制时其右方的一个小窗口可看到效果,完成后再另存为需要的文件名。一般只需绘制16*16点阵的小图标即可,除非你习惯于接受大图标菜单。5 如何使每次启动AutoCAD都自动调入AutoLisp程序,而不需