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

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LISP语言在地下管线测量中应用

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

文档评论(0)

linsspace + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档