LISP语言在地下管线测量中的应用

时间:2022-10-08 01:30:22

LISP语言在地下管线测量中的应用

摘要:本管线系统使用AUTOLISP程序语言,通过CAD的扩展属性,对管点图块进行属性扩展,从而使每个管点的特征信息附着于该管点图块。再根据表示管线流向多段线方向,一一提取线上管点的特征信息,实现管线点、线表自动输出到EXCEL。

关键词: cad; lisp;管线测量;开发

1. 引言

近年来城市测量工作在城市发展中的作用越来越突出,而城市地下管网测量作为城市测量工作的重要组成部分,越来越受到相关部门的重视。查明地下管线,并确定其分布、埋深及走向等管点特征信息,建立一个有效的、简洁的管线信息测量录入系统,就显得非常迫切。笔者所在单位进行的管线测量成果一般以EXCEL电子表格的形式输出,而日常测量成图又是在CAD平台下,故笔者利用Autolisp实现CAD到EXCEL的管线点、线表自动输出,从而提高工作效率。

2. AUTOLISP程序语言的介绍

Autolisp是内含于Autocad软件中的开发语言,是强化Autocad最好、最直接的程序语言。它最大的特点就是不挑剔编辑环境,几乎在所有的文本编辑器中都可以编写,而且不需要特殊的编译过程。DCL是内嵌于CAD平台的一款对话框语言,该语言和LISP一样,语法结构简单,不需经过编译,使用LISP+DCL能够轻松的实现基于CAD平台的交互输入与输出,功能强大、通俗易用。

3.程序的设计

管线测量一般先外业采集管点的坐标及高程信息,然后再对各个管点的特征数据进行采集,该系统主要模拟外业生产流程,根据外业采集的各特征点信息的流程进行录入,通过管线的流向方向,实现管线点、线表从CAD到EXCEL的输出。主要组成部分如下:

程序的录入界面:

程序的输出效果:

3. 添加扩展属性的部分原代码:

(if (and en (= leixing "INSERT"))

(progn

(setq endata (entget en))

(if (setq endatabh (entget en '("gxbh")))

(progn

(setq endatabhsd (cdr (cadr (assoc -3 endatabh))))

(if (assoc 1000 endatabhsd)

(setq bgdbh (cdr (assoc 1000 endatabhsd)))

)

(if (assoc 1040 endatabhsd)

(setq bgdms (cdr (assoc 1040 endatabhsd)))

)

(if (assoc 1070 endatabhsd)

(setq bgyks (cdr (assoc 1070 endatabhsd)))

) ) )

(if (setq endatakz (entget en '("gxkz")))

(progn

(setq endatakzsd (cdr (cadr (assoc -3 endatakz))))

(if (assoc 1000 endatakzsd)

(setq bgdgj (cdr (assoc 1000 endatakzsd)))

)

(if (assoc 1040 endatakzsd)

(setq bdmgc (cdr (assoc 1040 endatakzsd)))

)

(if (assoc 1070 endatakzsd)

(setq byyks (cdr (assoc 1070 endatakzsd)))

) ) )

(if (setq endatadx (entget en '("gxdx")))

(progn

(setq endatadxsd (cdr (cadr (assoc -3 endatadx))))

(if (assoc 1000 endatadxsd)

(setq bwydh (cdr (assoc 1000 endatadxsd))))

(if (assoc 1040 endatadxsd)

(setq bxdms (cdr (assoc 1040 endatadxsd))))

(if (assoc 1070 endatadxsd)

(setq bdlgs (cdr (assoc 1070 endatadxsd))))))

(if (setq endatabj (entget en '("gxbj")))

(progn

(setq endatabjsd (cdr (cadr (assoc -3 endatabj))))

(if (assoc 1000 endatabjsd)

(setq bxdgj (cdr (assoc 1000 endatabjsd))))

(if (assoc 1040 endatabjsd)

(setq bgdjs (cdr (assoc 1040 endatabjsd))))))))

4. 结语:

通过该系统实现了基于CAD平台下管线点、线表的自动输出,改变了传统模式需要在CAD平成图形编辑后在EXCEL中再次进行管点特征信息录入的生产模式。程序利用CAD图元扩展属性,使管点信息附着于图块中,可通用于所有的CAD平台,能够方便移植和扩展。

参考资料

[1] 吴永进,林美樱.AutoCAD 程序设计魔法书[AutoLISP&DCL基础篇]. 中国铁道出版社,2003

[2] 郭秀娟,于全通,范小鸥. AutoLISP语言程序设计. 化学工业出版社,2008

注:文章内所有公式及图表请以PDF形式查看。

上一篇:变电运行的安全管理 下一篇:桥梁桩质量控制研究