- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Auto Lisp在百图水利土石方设计软件中快速标注中桩高程的应用.doc
Auto Lisp在百图水利土石方设计软件中快速标注中桩高程的应用
【摘 要】本文叙述了利用AutoLISP在百图水利土石方设计软件中快速标注中桩高程的应用,并通过实例证明程序是可行性的。
【关键词】AutoLISP 百图水利土石方设计软件 水利测量 横断面图 中桩高程
1 引言
AutoLISP是由Autodesk公司开发的一种LISP程序语言,LISP是List Processor的缩写。通过AutoLISP编程,可以节省内业很多时间。AutoLISP语言作为嵌入在AutoCAD内部的具有智能特点的编程语言,是开发应用AutoCAD不可缺少的工具。它能帮助经常使用或重复操作步骤的自动化,从而显著地提高工作效率。其基本功能是可以控制用户与程序运行之间的相互关系。AutoLISP具有容易撰写、容易学习、无需编译、安全性好等特点。
2 问题及解决方法
百图水利土石方设计软件是目前在水利工程测量中常用的软件之一,它对土石方工程(如堤防、河道、渠道、土坝、道路等)断面数据的提取及批量绘制横断面图等有着很强的功能。但是,在批量绘制好的横断面图上,每标注一个横断面中桩高程都必需重复进行“高程校准 → 选取标尺 → 高程标注 → 指定高程符号插入点”这四步曲,操作起来就很费时费力并且容易出错。针对这一情况,通过对横断面数据及横断面图进行了分析,结果发现数据中桩高程是唯一的,也就是说每一个横断面数据中都有一个中桩高程(注:如要用下面这个程序,先检查数据后再应用,每一条横断面数据中只能保留一个中桩高程,否则程序就会将中桩高程标注错位。),其数据格式为“ 0.000 90.398”;再分析绘制好的横断面图,发现横断面的“断面排列间距”是一个固定值。根据这两个特点,笔者利用AutoLISP语言编写了一个小程序,就可以解决这一问题。
3 程序代码
;;;批量标注横断面中桩高程
(defun c:gcsb(/ f p jj str b h)
;(regmap)
(setq f (getfiled \n选择断面数据文件 d:/ txt 2))
(setq ltscale (htblc))
(setq jj (getreal \n输入断面排列间距: ))
(if (= jj nil) (setq jj 100))
(setvar osmode 32)
(setq p1 (getpoint \n指定点:))
(setvar osmode 0)
;;;
(setq p4 (polar p1 (/ pi 0.66667) 0))
(setq pt (polar p4 (* (/ pi 2.0) 3) (- 0 (* jj 1000))))
;;;上标
(setq p2 (polar p1 (/ pi 0.66667) (- 0 (* 2610.26 ltscale))))
;;;下标
;(setq p2 (polar p1 (/ pi 0.66667) (* 5002.22 ltscale)))
;;;
(setq p3 (polar p2 0 (* 2004.89 ltscale)))
(setq p (polar p3 (* (/ pi 2.0) 3) (- 0 (* jj 1000))))
(setq f (open f r))
(setq str (read-line f))
(while (and (/= str nil) (/= str ))
(setq b (substr str 1 15))
(if (= b 0.000 )
;(setq b (substr str 1 5))
;(if (= b 0.0 )
(progn
(setq h (substr str 16 7))
;(setq h (substr str 6 7))
(setq pt (polar pt (* (/ pi 2.0) 3) (* jj 1000)))
;(setq p (polar p (* (/ pi 2.0) 3) (* jj 1000)))
(command layer m zzbz c white zzbz )
;;;上标
(command insert ele_sym05.dwg pt (* 2500 ltscale) (* 2500 ltscale) h)
;;;下标
;(command insert ele_sym15.dwg pt (* 2500 ltscale) (* 2500
文档评论(0)