杨秀海
【期刊名称】《《广西水利水电》》 【年(卷),期】2019(000)005 【总页数】3页(P70-72)
【关键词】水利水电; 工程地质; 地面线; 剖面线; AutoCAD; Lisp语言 【作 者】杨秀海
【作者单位】安徽省水利水电勘测设计院 安徽 蚌埠 233000 【正文语种】中 文 【中图分类】TP391.73 0 引言
AutoCAD 是工程地质勘察中最常用的二维绘图软件,大部分勘察图件都在该软件环境下绘制,加上AutoCAD良好地扩展性,为其二次开发应用于特定环境打下良好基础。AutoCAD 下的二次开发方式也很多,有AutoCAD 内置的Lisp、ARX、VBA等,也可使用高级编程语言开发软件通过ActiveX接口控制AutoCAD的方式。
水利水电工程地质勘察行业需要的各种勘察图件较多,但最主要和基本的图件有平面地质图、工程地质剖面图、钻孔柱状图。工程地质剖面图又常常是数量最多且费时费力最多的图件,对于水利水电行业来说,一般由于现场地貌更加复杂,工程地
质剖面图剖线经常横切河道,所剖切的地面线一般起伏不定。对于一线员工在勘察过程中时需要及时在剖面图上勾绘地面线,本文探讨利用Auto-CAD内置的Lisp语言进行二次开发,简化地面线勾绘程序,提高工作效率降低工作强度。 1 设计思路
在画地质剖面图时,我们经常要勾绘地面线。我所见的大部分地质专业同仁都是从地质平面图上选取若干点,利用计算器或Excel 电子表格程序计算其在剖面图上水平、垂直距离,然后再用多段线连成剖面。此法缺点是繁琐、费时、易出错。相对来说测绘专业成图简单,可利用测量原始数据编制*.csv文件,利用CASS绘制剖面图,但是此法对地质专业来说由于需要重新沿地质剖线拾取剖面测量数据,并需要手输*.csv文件,依旧繁琐,不能简化工作量。在图件多,地面线复杂时,会严重影响到编写勘察报告时间。为了快速、准确地在剖面图中勾绘出地面线,本人特编辑出此程序供大家分享。 2 源程序代码
(defun C:pm(/cur pt mile gaoch shuiping chuizhi pt0 p1 p0 p2) ;;自定义错误处理函数 (defun myerror(s) (if (and(/=s\"函数被取消\") (/=s\"函数已取消\") (/=s\"Function cancelled\") (/=s\"quit/exit abort\") )
(princ(strcat\"错误:\"s)) )
(if fi(setq fi(close fi)))
(setq*error*olderror) (command\"UNDO\"\"END\") (setvar\"CMDECHO\"1) (princ) )
;;系统变量设置 (setvar\"cmdecho\"0) (setq olderror*error* *error* myerror )
(while(not cur)
(princ\"\\n请选择剖面线:\") (setq cur(car(entsel)))
(if cur (setq cur (vlax-ename ->vla-object cur))) )
(setq shuiping(GETREAL\"请输入水平比例尺1:\")) (setq chuizhi(GETREAL \"请输入垂直比例尺1:\")) (setq p0(getpoint \"请在空白处点取剖面绘制位置\")) (princ\"\\n请选择剖面线端点:\") (setq pt0(getpoint))
(setq gaoch0(GETREAL \"请输入端点高程:\")) (while(not pt)
(princ\"\\n请选择剖面线上面其他控制点:\") (setq pt(getpoint))
(if(not pt)(exit))
(setq pt(vlax-curve-getClosestPointTo cur pt T)) (setq gaoch(GETREAL\"请输入此点高程:\"))
(setq p1(polar p0 0(/(*(-(vlax-curve-get-DistAtPoint cur pt)(vlax-curve-getDistAtPoint cur pt0))1 000)shuiping)))
(setq p2(polar p1(/pi 2)(*1 000(/(-gaoch gaoch0)chuizhi)))) (command\"pline\"p0 p2\"\") (setq gaoch0 gaoch) (setq p0 p2) (setq pt0 pt) (setq pt nil) )
;;还原系统变量 (setq*error*olderror) (setvar\"CMDECHO\"1) (princ) ) 3 举例
新建一个“txt”格式文本文件,将上述源程序代码写进去,保存后将文件名后缀“.txt”改成“.lsp”。加载该程序,根据AutoCAD窗口下面命令行的提示输入相应的数据,即可瞬间绘制出剖线所切地面线(见图1)。 (1)输入命令“pm”后,回车。 (2)请选择剖面线,拾取剖面线后回车。
(3)请输入水平比例尺1∶500 和垂直比例尺1∶200,比例尺可根据剖面图成图
比例填写。
(4)请在空白处点取剖面绘制位置。
(6)请选择剖面线端点。如水利行业一般自左向右作地质剖面,可点取剖面线的最左边端点。
(8)请选择剖面线上面其他控制点。可点取地面有起伏或高程有变化的拐点。 (9)请输入此点高程,直至按Enter键结束程序。 图1 利用命令“pm”绘制剖面线成果展示图 4 结语
本次通过利用Lisp 语音对AutoCAD 的二次开发,将计算机能做的事都交给程序完成,地质人员的主要精力可放在成果的分析上,使地质勘察行业的内业整理效率得到较大提高,极大缩短了成果提交时间,也减轻了地质人员的工作压力。 参考文献
【相关文献】
[1]梁春学,崔洪斌,吴义忠.AutoLISP 实用教程[M].北京:人民邮电出版社,1998. [2]GB50487-2008,水利水电工程地质勘察规范[S]. [3]SL73.3-2013,水利水电工程制图标准(勘测图)[S]. [4]SL567-2012,水利水电工程地质勘察资料整编规程[S].
因篇幅问题不能全部显示,请点此查看更多更全内容