- 17.50 KB
- 6页
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
CAD技术在水利水电工程中的应用CAD技术在水利水电工程中的应用CAD技术在水利水电工程中的应用CAD技术在水利水电工程中的应用摘要:AutoCAD是广大工程设计人员普遍使用的通用绘图软件,结合专业特点,通过对AutoCAD系统的二次开发可以开发出满足各种用途的专业软件,即使对于普通设计人员也可以通过AutoCAD内嵌的VisualLisp语言方便地增加CAD命令,扩充完善适合本专业的新功能,从而极大地提高工作效率,本文通过几个应用实例对AutoCAD在水工设计上的应用进行了探讨。关键词:CAD技术应用水利水电工程AutoCADVisualLisp语言1概述水利水电工程领域利用AutoCAD平台进行二次开发也取得了一系列成果,如90年代以来陆续开发的水电站地面厂房CAD系统、重力坝CAD系统、隧洞CAD系统、水机油汽水CAD系统、地质柱状图CAD等均取得了较好的应用效果。但水电工程设计的复杂性决定了任何现成的CAD软件都有其局限性,设计过程中许多问题还只能用原始的方法解决。本文通过几个实例对AutoCAD二次开发常用的Lisp语言在水电工程设计中的应用进行了初步探讨,希望能够起到抛砖引玉的作用。VisualLisp语言是AutoCADR14版本以后提供的全新的开发环境,是嵌于AutoCAD内部,将Lisp语言与AutoCAD相结合的产物,是一种智能型语言。利用AutoLisp可以灵活方便地增加AutoCAD新命令,几乎无限地扩展AutoCAD新功能,2应用实例2.1坐标画线
利用已知坐标点画线是设计工作中经常遇到的问题,如河道、堤防等实测断面、水位流量关系曲线、堰面曲线等数据的处理,均可归结为坐标画线问题。对于堰面曲线等有函数方程的曲线可以利用EXCEL按照期望的步长自动生成一系列坐标点。对于测量常用的起点距-高程形式的数据,也可以利用EXCEL转化成坐标点形式。(1)利用脚本文件(.SCR)利用任何文本编辑器如Note、Uedit、Word、Excel等建立纯文本文件EX1.SCR,注意文本文件后缀必须为.SCR,坐标之间用半角逗号分开,文件中不允许出现空格,文件最后一行必须为空回车。文件建立时,可以直接把EXCEL或其他文件中的坐标表利用拷贝、粘贴功能加入脚本文件中。Pline345.66,238.65128.44,235.66文件保存后,执行AutoCAD中“工具”下的”运行脚本”,在显示的窗口中查找并选中EX1.SCR,屏幕上会立即显示所绘线条。(2)利用LSP程序建立坐标表文件EX2.DAT,后缀任意,可以依次输入多段曲线,中间用曲线名称分开,程序自动绘制多条曲线并可标注坐标表。“曲线1”128.44,235.66345.66,231.78“曲线2”433.34,567.23434.12,464.12利用AutoCAD中“工具”菜单下的“VisulLisp编辑器”建立DRLINE.LSP文件如下(defunC:drline()(iffn
(setqfn(getfiled“坐标点文件名”fn““2))(setqfn(getfiled“坐标点文件名”““““2)))(setqf(openfn“r”))(setqp0(getpoint“n画线起点:”))(setqbz0mm1)(command“pline”)(while(/=bz1)(setqmd(read-linef))(if(/=mdnil)(setqzbb(readmd))(setqbz1))(setqdx(carzbb)dy(cadrzbb))(setqp1(list(+dx(carp0))(+dy(cadrp0))))(commandp1)(setqmm(1+mm))
)(command““)(closef))文件存盘后,加载运行,相当于新增加了坐标画线命令DRLINE,按提示选中存放坐标表的文件即可实现自动绘制曲线。2.2地形切剖面水电工程设计中经常遇到在地形图上切剖面的问题,借助VisualLisp可以实现快速切剖面。(1)初始地形图处理把带z坐标的地形平面图进行变换,变换后z坐标值成为层名,为加快切剖面运行速度,把“LWPOLYLINE”和”SPLINE”均转化为”LINE“线,程序如下(defunc:pltol();LWPOLYLINE转化为LINE(setqn0)(setqe(ssget”X”(list(cons0“LWPOLYLINE”))))(setqsh(sslengthe))(ife(while(<nsh)(setqe1(ssnameen))(command“pedit”e1“d”““)(setqx(entgete1))
(setqngc(atof(setqla(fld8x))))(command“explode”e1)(setqn(+n1)))))(defunfld(numlst)(cdr(assocnumlst)))(defunc:spltol();SPLINE转化为LINE(setqn0)(setqe(ssget“X”(list(cons0“SPLINE”))))(setqsh(sslengthe))(ife(while(<nsh)(setqx(entget(setqe1(ssnameen))))(setqnla(itoa(fix(caddr(fld10x)))))(if(=(fld0x)“SPLINE”)(progn(command“layer”“n”nla“c”“6”nla“s”nla““)(command”line”)(setqnm(lengthx)dzs(fld73x)dzs1(fld74x))
(while(>nm5)(if(=(car(nthnmx))10)(progn(setqb1(nthnmx))(setqx1(cadrb1))(setqy1(caddrb1))