(水利工程)CAD技术在水利水电工程中的应用精编

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(水利工程)CAD技术在水利水电工程中的应用

1概述

美国AutodeskX公司开发的AutoCAD系统自1982年推出以来,以其使用方便、功能强大和系统开放性壹直独领风骚。成为各工程领域首选的CAD系统。

水利水电工程领域利用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或其他文件中的坐标表利用拷贝、粘贴功能加入脚本文件中。

Pline

345.66,238.65

213.45,124.56

128.44,235.66

文件保存后,执行AutoCAD中“工具”下的“运行脚本”,在显示的窗口中查找且选中EX1.SCR,屏幕上会立即显示所绘线条。

(2)利用LSP程序

建立坐标表文件EX2.DAT,后缀任意,能够依次输入多段曲线,中间用曲线名称分开,程序自动绘制多条曲线且可标注坐标表。

213.45,124.56

128.44,235.66

345.66,231.78

“曲线2”

433.34,567.23

434.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))

)

(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(

(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(

(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))

(setqz1(cadddrb1))

(setqglb(listx1y1)) (commandglb)

))

(setqnm(-nm1))

)))

(command"")

(setqn(+n1))

相关文档
最新文档