CAD技术在水利水电工程中的应用.docx

上传人:b****6 文档编号:15431159 上传时间:2023-07-04 格式:DOCX 页数:17 大小:47.93KB
下载 相关 举报
CAD技术在水利水电工程中的应用.docx_第1页
第1页 / 共17页
CAD技术在水利水电工程中的应用.docx_第2页
第2页 / 共17页
CAD技术在水利水电工程中的应用.docx_第3页
第3页 / 共17页
CAD技术在水利水电工程中的应用.docx_第4页
第4页 / 共17页
CAD技术在水利水电工程中的应用.docx_第5页
第5页 / 共17页
CAD技术在水利水电工程中的应用.docx_第6页
第6页 / 共17页
CAD技术在水利水电工程中的应用.docx_第7页
第7页 / 共17页
CAD技术在水利水电工程中的应用.docx_第8页
第8页 / 共17页
CAD技术在水利水电工程中的应用.docx_第9页
第9页 / 共17页
CAD技术在水利水电工程中的应用.docx_第10页
第10页 / 共17页
CAD技术在水利水电工程中的应用.docx_第11页
第11页 / 共17页
CAD技术在水利水电工程中的应用.docx_第12页
第12页 / 共17页
CAD技术在水利水电工程中的应用.docx_第13页
第13页 / 共17页
CAD技术在水利水电工程中的应用.docx_第14页
第14页 / 共17页
CAD技术在水利水电工程中的应用.docx_第15页
第15页 / 共17页
CAD技术在水利水电工程中的应用.docx_第16页
第16页 / 共17页
CAD技术在水利水电工程中的应用.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

CAD技术在水利水电工程中的应用.docx

《CAD技术在水利水电工程中的应用.docx》由会员分享,可在线阅读,更多相关《CAD技术在水利水电工程中的应用.docx(17页珍藏版)》请在冰点文库上搜索。

CAD技术在水利水电工程中的应用.docx

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

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

1概述

美国Autodesk公司开发的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,后缀任意,能够依次输入多段曲线,中间用曲线名称分开,程序自动绘制多条曲线并可标注坐标表。

“曲线1”

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

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

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

4x))

(while(>nm5)

(if(=(car(nthnmx))10)

(progn

(setqb1(nthnmx))

(setqx1(cadrb1))

(setqy1(caddrb1))

(setqz1(cadddrb1))

(setqglb(listx1y1))(commandglb)

))

(setqnm(-nm1))

)))

(command"")

(setqn(+n1))

)))

(2)切剖面输入剖面编号,在平面地势图上指定两点确定剖面剖切线位置,指定剖面图起点,利用AutoCAD的inters函数搜索剖切线与地势图的全部交点,自动运算交点坐标,运算交点与剖面位置起点的距离,按各交点高程和与起点的距离形成剖面图各点坐标,即可用本文实例1坐标画线生成地势图的剖面。

(defundxtent1()

(setqn0xdzbnil)

(setqxds0)

(setqsh(sslengthe1))

(while(

(setqx(entget(ssnamee1n)))

(if(=(fld0x)"LINE")

(progn

(setqdxtgcgc(fld8x))

(setqdxtgcgc(atoidxtgcgc))

(if(>dxtgcgc10)

(progn

(setqpst(fld10x))

(setqpet(fld11x))

(setqzb(listgc

(list(carpst)(cadrpst))

(list(carpet)(cadrpet))

))

(setqxdzb(conszbxdzb))

(setqxds(+xds1))

))))

(setqn(+n1))

))

(defunc:

dxtsec()

(setqpmh(+pmh1))

(setqpmh(getstring"n剖面号"))

(setqpt1(getpoint"n剖切位置起点:

"))

(setqpt2(getpointpt1"n剖切位置终点:

"))

(setqpt3(getpoint"n剖面图布置:

"))

(setqp01pt3)

(setqel(ssget"F"(listpt1pt2)));利用AutoCAD的目标选择“F”方式选取与剖切线相交的地势线。

(dxtent);猎取与剖切线相交地势线的坐标

(setqmxgc-100)

(setqmngc10000)

(setqm0pmpnil)

(setqnxdsi0)

(while(

(setqcrosp

(interspt1pt2(nth1(nthixdzb))(nth2(nthixdzb))

1));求剖切线与地势线的交点(if(/=crospnil)(progn

(setqdxtgcgc(nth0(nthixdzb)))(setqmxgc(maxmxgcdxtgcgc))(setqmngc(minmngcdxtgcgc))

(setqdst(distaneept1crosp));剖切线起点与交点的距离(setqdst(*(/blczdxthtbl)dst))(setqpmp(cons(listmdstdxtgcgc)pmp))(setqm(+m1))

))

(setqi(+i1))

))

2.3沿曲线标注在设计中会遇到沿给定曲线进行标注咨询题,如平面布置图中的开挖线符号沿开挖轮廓的标注,剖面图中岩石符号沿轮廓线标注、点筋标注、沿任意曲线进行汉字标注等。

此类咨询题要紧应用AutoCAD的Measure或divide命令来解决。

两个命令的要紧差不是前者按指定的长度在曲线上标注,后者按给定的分段数等分曲线并在等分点处进行标注。

要标注的轮廓曲线最好用pline线,要标注的符号预先做成图块,图块采纳单位块,执行measure或divide命令,选取要标注的曲线,指定标注符号,分段长度或分段数即可完成标注,当发觉标注的符号太密或太疏时,能够执行erase命令

选择P进行删除,比例不合适或符号方向不正确,能够利用特性编辑器,选中所有标注符号,对标注符号的比例和旋转角度进行调整,直到中意为止。

关于更高级的应用,能够编制LSP程序,实现符号和文字沿任意曲线标注。

2.4表格生成

AutoCAD本身没有表格处理功能,设计图纸中工程量表、钢筋表等涉及到表格生成的咨询题能够采纳以下方法处理:

(1)直截了当把Word或ExceI文件中的表格直截了当粘贴到CAD图形中,修改时只要双击图中的表格即可进入Word或Excel中进行编辑修改,修改完成后退出即可返回到AutoCAD中连续进行设计,该法优点是方便,快捷,易于把握,能够充分利用Excel的强大运算功能。

缺点是表格在AutoCAD中并不是一个一般图元,无法利用CAD功能对表格的字高、颜色和线宽进行编辑。

(2)编制LSP程序,依次输入表格标题、表格行数、表格列数、表格行高和列宽以及表格插入点等参数,能够自动生成表格,表格中差不多按仿Excel形式填入了文字,能够用字处理软件对表格中文字进行编辑修改。

(defunC:

mtab()

(setqtb1niltb2niltb3nil)

(setqrows(getint"表格行数"))

(setqcols(getint"表格列数"))

(setqrowh(getreal"行高"))

(setqcolw(getreal"列宽"))

(setqp1(getpoint"n表格左上角点位置:

"))(command"pline"p1"w""0.5""0.5"(setqp2(list(+(carp1)(*colscolw))(cadrp1)))

(setqp4(list(carp2)(-(cadrp2)(*rowsrowh))))

(setqp3(list(carp1)(-(cadrp2)(*rowsrowh))))

C"

(setqn1)(while(vnrows);绘水平线表格

(command"pline"(list(carp1)(-(cadrp1)(*nrowh)))"w"

(list(carp2)(-(cadrp2)(*rowhn)))"")(setqn(+n1))

(setqn1)

(while(

(command"pline"(list(+(carp1)(*ncolw))(cadrp1))"w""0""0"(list(+(carp1)(*ncolw))(cadrp3))

"")

(setqn(+n1))

(command"text""m"(list(+(carp1)(*0.5colscolw))

(setqn0)

(while(

(setqm0)

(while(

(cond

((=m26)(setqbzstr(strcat(chr(+64(/m26)))

(chr(+65(-m(*26(/m26))))))))

(command"text""m"(list(+(carp1)(*0.5colw)(*mcolw));表格内容标注

(-(cadrp1)(*0.5rowh)(*nrowh)))(getvar"TEXTSIZE")"0"(strcatbzstr(itoa(+n1))))(setqm(+m1))

(setqn(+n1))

))

(3)生成钢筋表

钢筋表和材料表生成是施工图设计中比较繁琐的一项工作,专门容易出错,此处介绍利用程序进行钢筋表和材料表自动生成的方法。

利用造字

和,以后在其它电脑上只要把E

生成钢筋表时按指定表格位置生成钢筋表表头,按照提示输入钢筋编号(能够不连续)、钢筋等级和直径如20、16,交互绘制钢筋简图和标

注长度(标注长度能够输入多种形式如50~200表示长度等差变化;30,40,

50表示一个编号多个钢筋长度,),钢筋根数,构件组数,程序自动完成表格其余各项(总长度、重量,关于I级钢筋长度中自动计入弯钩长度)的填写,备注栏中自动填入等差变化钢筋的等差值。

采集钢筋表中直径、等级和总长信息,通过自动分类汇总,生成钢筋表的材料表。

2.6高程小数位数处理

尺寸标注小数位数专门容易调整,但诸如高程、表格中数字要调整则专门困难,借助LSP程序的调整专门方便,只要选取需要调整的数字,按照提示输入需要保留的小数位数,则程序自动对所有选种数字进行修改。

(defunentsgc()

(setqn0)

(setqsh(sslengthe1))

(while(vnsh)(setqx(entget(ssnamee1n)))

(if(=(fld0x)"TEXT")

(progn

(setqagc(fld1x))

(setqc(substragc11))

(if(or(=c"+")(=c"-")(and(>=c"0")(<=c"9")))

(progn

(if(or(=c"+")(=c"-"))

(setqbgc(substragc2))

(setqbgcagc)

(setqcgc(atofbgc))

(setqzh(rtoscgc2gcws))

(if(or(=c"+")(=c"-"))

(setqzh(strcatczh)))

(setqx(subst(cons1zh)(assoc1x)x))

(entmodx)

))

))

(setqn(+n1)))

(defunc:

yxws()

(setqe1(ssget))

(setvar"dimzin"0)

(setqgcws(getint"保留小数位数:

"))

(ife1(entsgc)(print"nnotfound"))

(setqxnil)

2.7应用软件前、后处理由于软件升级滞后,一些常用软件后处理功能专门弱或没有,能够利用LSP程序结合AutoCAD增加或简化前后处理功能。

下面结合平面渗流分析程序STSE软件对其前、后处理功能的实现进行介绍:

(1)前处理

STSE为平面渗流有限兀程序,单兀划分和单兀、节点编号工作量最大,能够借助其它通用有限元软件的前处理功能如Ansis、Algor、SAP84等进行初步处理,生成单兀、节点编号和节点坐标,而后按照STSE数据文件的格式要求对数据文件进行编辑。

(2)后处理后处理成果要紧为:

单兀网格图,浸润线和等势线。

单兀网格图中有节点和单兀编号,不同渗透系数的单兀采纳不同的颜色,以便按照网格图直观地判定数据文件中几何参数和材料特性的正误;

第一分析STSE的输出结果文件的格式,搜索并选择其中要紧参数如单兀总数、节点总数和材料总数,把节点坐标和单兀信息分不储备,通过对单兀循环生成单兀网格图。

(defunc:

seepmesh()

(iffn

(setqfn(getfiled"渗流结果文件名"fn""2))

(setqfn(getfiled"渗流结果文件名"""""2)))

(setqf(openfn"r"))

(setqmd(read-linef))

(while(/=(substrmd258)"单兀总数")

(setqmd(read-linef))

);定位单兀总数

(setqdyzs(atoi(substrmd585)));读单兀总数

(setqmd(read-linef))

(setqjdzs(atoi(substrmd585)));读节点总数

(setqmd(read-linef))

(setqclh(atoi(substrmd585)));读材料总数

(setqm0)

(repeatclh

(setqm(+1m))

(setqtcm(strcat"zclh"(itoam)))

(command"layer""m"tcm"c"(itoam)tcm"")

);按材料种类生成图层名称

(setqm0n0)

(repeatdyzs对单元循环,dycfb中存放单元信息

(setqm(+m1))

(setqclh(nth0(nthmdycfb)))

(setqjdh1(nth1(nthmdycfb)))

(setqjdh2(nth2(nthmdycfb)))

(setqjdh3(nth3(nthmdycfb)))

(setqjdh4(nth4(nthmdycfb)))

(command"layer""s"(strcat"zclh"(itoaclh))"")

(command"pline";绘制单元网格

(nthjdh1jdzbb)

(nthjdh2jdzbb)

(nthjdh3jdzbb)

(nthjdh4jdzbb)"c")

(setqbzdzb(mapcar'+(nthjdh1jdzbb)(nthjdh2jdzbb)

(nthjdh3jdzbb)(nthjdh4jdzbb)))

(setqbzdzb(list(/(carbzdzb)4.0)(/(cadrbzdzb)4.0)))

(command"text""m"bzdzb"0.5""0"(itoam))

;标注单元号

(setqm0)

(repeatjdz

(setqm(+m

(setqbzdzb(nthmjdzb

b))

(setqbzdzb(list(+(carbzdzb)0.0)(+(cadrbzdzb)0.0)))

(command"text""m"bzdzb"0.5""0"(itoa

m))

));标注节点号

(closef)

)限于篇幅,等势线和浸润线生成程序不再赘述。

同样,对工程设计中遇到的其它软件如:

STAB边坡稳固分析、SAP84的输出文件均可进行类似后处理工作。

3结语

AutoCAD软件应用差不多在设计单位普及,VisualLisp的显现关于提升Lisp语言的编程效率和AutoCAD应用水平具有重要意义。

本文涉及的几个实例差不多在实际工作中发挥专门大作用,充分讲明在工程设计当中结合本专业要求开发一些简单有用的Lisp小程序能够有效减轻设计人员的劳动强度,使AutoCAD不仅仅是绘图工具,而真正成为设计人员得心应手的高效设计平台。

作者简介

耿振云男高级工程师中水北方勘测设计研究有限责任公司天津300222

31.1.1脚本文件简介

脚本文件类似于Dos操作系统中的批处理文件,它能够将不同的AutoCAD命令组合起来,并按确定的顺序自动连续地执行。

脚本文件是文本文件,扩展名为“.SCR”,用户可使用任一文本编辑器来创建脚本文件。

因为脚本文件可使一些命令序列自动执行,因此常用来产生、编辑或观看图形,如幻灯放映、初始的图形设置等。

但脚本文件不能使用对话框或菜单,当从脚本文件中发出打开对话框命令时,AutoCAD运行该命令的命令栏含义而不是打开对话框。

如第29章中所述,用户能够通过命令行的开关设置,使AutoCAD在启动时自动调用脚本。

此外,用户也能够在AutoCAD中运行脚本,其调用方式为:

菜单:

【Tools(工具)】宀【RunScript•••(运行脚本)】

命令行:

script(或不名scr)

注意AutoCAD的“undo”命令将每个脚本当作一个组,能够

用单个“undo”命令舍弃一组脚本的操作。

讲明“script”命令可透亮地使用。

31.1.2实例1使用脚本文件绘制并显示图形

Step1创建脚本文件“exam_draw.sc”r

(1)使用Windows附件中的“记事本”程序创建一个新文件。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2