AUTOCAD一种快速分层展点的方法
2013-01-25胡志强杨海成
胡志强,杨海成
1.吉林省地矿测绘院,吉林 长春 130062; 2.核工业航测遥感中心, 河北 石家庄050002
1 LISP语言的特点
AUTOLISP 是为二次开发AUTOCAD 而专门设计的编程语言,它起源于LISP 语言,嵌入CAD用户的程序设计语言,运行于CAD 环境,是CAD提供的用户功能应用开发手段中最常用、最实效的一种,是我们在CAD 应用开发中最主要的工具。它与人工智能程序语言COMMANDLISP 有许多相同的语法和约定,但它又带有为CAD 服务的、独特的一些功能函数,这在CAD 应用上具有其他语言无法相比的优秀功能。LISP 又是符号—函数式语言,数据和函数都用符号表达。就连函数也是一种数据,这使得程序设计及其灵活,程序进程也很容易把握。
利用AUTOLISP 语言可以进行各种分析计算、自动执行重复的命令,还可以定义新的AUTOCAD 命令、驱动对话框、控制菜单。为AUTOCAD 扩充具有一定智能化、参数化的功能,可以使绘图人员的主要精力用于地形图的绘制,实现真正意义上的计算机辅助设计。
2 分层展点主要思路及实现
数字测图中地形点的描绘必须具备三类信息:测点的三维坐标、测点的属性即地形点的特征信息、测点的连接关系。测点的属性一般采用地形编码表示,地形编码是一种约定,是联接内外业的纽带。采用编码法测图,在内业编辑的过程中只需要查看草图中测点的连接关系就可以编绘地形图。
外业测量的数据一般都是利用测量编图软件本身的程序展点,外业编码与点号需要切换显示,所展点均在同一图层,内业编绘中需要进行仔细辨认。如果在AUTOCAD 展点的过程中,利用数据的编码进行分层展点,编绘过程中按照需求只显示其中一层。图面简明清晰,提高内业制图效率。本人利用ATUOCAD 软件的LISP 语言进行程序设计,实现在ATUOCAD 环境下批量进行外业数据的自动分层展绘。主要思路如下:读取坐标数据文件,设计坐标数据文件常用格式。取得坐标点的点号、编码、坐标信息,利用程序语言,自动建立图层,根据编码自动分层。设置高程点位数,展点时高程点位数自动保留为所需位数。这样生成的图元就在所对应的编码的图层里。主程序如下:
选择文件:
(setq filename (getfiled "选择坐标数据文件" """" 8)) ;
(setq file_id (open filename "r"))
读取数据:
(progn (setq aa1 (read-line file_id))
(while (/= aa1 nil)
(setq i 0)
(setq aa1 (vl-string-translate "," " " aa1))
(setq aa1 (read (strcat "(" aa1 ")")))
读取图层等相关信息:
(setq dianmhao(vl-prin1-to-string (nth 0 aa1))
lay (vl-prin1-to-string(nth 1 aa1))
y (nth 3 aa1)
x (nth 2 aa1)
h (nth 4 aa1))
判断图层是否存在,不存在则新建图层:
(if (=(tblsearch "layer" lay)nil) (command "-layer""n" lay"") )
建立图元:
(entmake (list '(0 . "TEXT")
'(100 . "AcDbEntity")
'(100 . "AcDbText")
'(62 . 1)
'(40 . 2.4)
'(50 . 0.0)
(cons 8 LAY)
(cons 1 lay)
(cons 10 (LIST Y X H)) ) )
(entmake (list '(0 . "TEXT")
'(100 . "AcDbEntity")
'(100 . "AcDbText")
'(62 . 2)
'(40 . 2.4)
'(50 . 0.0)
(cons 8 "zdh")
(cons 1 dianmhao)
(cons 10 (LIST Y X H))))
(entmake (list '(0 . "POINT")
'(100 . "AcDbEntity")
'(100 . "AcDbPoint")
'(62 . 2)
(cons 8 LAY)
(cons 10 (LIST Y X H)))
图1 编辑程序对话框Fig.1 Programming dialog box
对话框编辑程序如图1。程序加载的方法有两种,一是在 CAD 里面输入命令 appload,加载zd.lsp 一个是把zd.lsp 的图标用鼠标左键按住直接拖动到 CAD 绘图区,也可以实现 lsp 文件的加载。加载后输入命令ZD,回车后启动程序。通过自定义展点类别、比例尺、字体类型、字高、字高宽比例等相关信息,单击选择数据按钮,选择cass 格式数据文件,在文本框中显示读取文件的坐标信息。观察坐标格式是否正确。点击确定,完成展点。
程序运行主菜单如图2。
展点后效果图,所展的点均在各自编码的图层(见图3)。绘图时只需按打开相关层即可,减少其他点干扰,提高编绘速度。
3 结束语
上述展点方法在本单位外业数字化成图的项目中得到广泛应用,内业编辑的过程中,通过图层开关控制逐层进行连线编辑,节省了时间。利用AUTOCAD 强大的定制和开发功能,为准确无误、高效的完成内业编绘做出了巨大的贡献。在一定程度上提高了内业成图的速度。操作简单、方便,界面友好,得到单位内部的广泛应用。
图2 程序运行主菜单Fig.2 Program run main menu
图3 展点后效果图Fig.3 Effect drawing after plotting
AUTOLISP 语言是AUTOCAD 软件包中的一个重要组成部分,也是AUTOCAD 二次开发者的主要工具。可以利用它对AUTOCAD 软件进行扩展。以满足项目的一些特殊需求。
[1] 梁雪春 崔洪斌,等. AutoCAD实用教程[M].北京:人民邮电出版社,1998.
[2] 郭平平,梁 帆. AutoLISP R13 & DCL从入门到精通[M].北京:科学出版社,1997.
[3] 肖祥红,雷宇斌. lisp语言在数字化测绘方面的应用探讨[J].国土资源导刊, 2007,3.