CAD水利水電工程技術(shù)管理論文

時(shí)間:2022-06-28 03:28:00

導(dǎo)語(yǔ):CAD水利水電工程技術(shù)管理論文一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

CAD水利水電工程技術(shù)管理論文

1概述

美國(guó)Autodesk公司開發(fā)的Autocad系統(tǒng)自1982年推出以來,以其使用方便、功能強(qiáng)大和系統(tǒng)開放性一直獨(dú)領(lǐng)風(fēng)騷。成為各工程領(lǐng)域首選的CAD系統(tǒng)。

水利水電工程領(lǐng)域利用AutoCAD平臺(tái)進(jìn)行二次開發(fā)也取得了一系列成果,如90年代以來陸續(xù)開發(fā)的水電站地面廠房CAD系統(tǒng)、重力壩CAD系統(tǒng)、隧洞CAD系統(tǒng)、水機(jī)油汽水CAD系統(tǒng)、地質(zhì)柱狀圖CAD等均取得了較好的應(yīng)用效果。但水電工程設(shè)計(jì)的復(fù)雜性決定了任何現(xiàn)成的CAD軟件都有其局限性,設(shè)計(jì)過程中許多問題還只能用原始的方法解決。本文通過幾個(gè)實(shí)例對(duì)AutoCAD二次開發(fā)常用的Lisp語(yǔ)言在水電工程設(shè)計(jì)中的應(yīng)用進(jìn)行了初步探討,希望能夠起到拋磚引玉的作用。

VisualLisp語(yǔ)言是AutoCADR14版本以后提供的全新的開發(fā)環(huán)境,是嵌于AutoCAD內(nèi)部,將Lisp語(yǔ)言與AutoCAD相結(jié)合的產(chǎn)物,是一種智能型語(yǔ)言。利用AutoLisp可以靈活方便地增加AutoCAD新命令,幾乎無(wú)限地?cái)U(kuò)展AutoCAD新功能,

2應(yīng)用實(shí)例

2.1坐標(biāo)畫線

利用已知坐標(biāo)點(diǎn)畫線是設(shè)計(jì)工作中經(jīng)常遇到的問題,如河道、堤防等實(shí)測(cè)斷面、水位流量關(guān)系曲線、堰面曲線等數(shù)據(jù)的處理,均可歸結(jié)為坐標(biāo)畫線問題。對(duì)于堰面曲線等有函數(shù)方程的曲線可以利用EXCEL按照期望的步長(zhǎng)自動(dòng)生成一系列坐標(biāo)點(diǎn)。對(duì)于測(cè)量常用的起點(diǎn)距-高程形式的數(shù)據(jù),也可以利用EXCEL轉(zhuǎn)化成坐標(biāo)點(diǎn)形式。

(1)利用腳本文件(.SCR)

利用任何文本編輯器如Note、Uedit、Word、Excel等建立純文本文件EX1.SCR,注意文本文件后綴必須為.SCR,坐標(biāo)之間用半角逗號(hào)分開,文件中不允許出現(xiàn)空格,文件最后一行必須為空回車。文件建立時(shí),可以直接把EXCEL或其他文件中的坐標(biāo)表利用拷貝、粘貼功能加入腳本文件中。

Pline

345.66,238.65

213.45,124.56

128.44,235.66

文件保存后,執(zhí)行AutoCAD中“工具”下的“運(yùn)行腳本”,在顯示的窗口中查找并選中EX1.SCR,屏幕上會(huì)立即顯示所繪線條。

(2)利用LSP程序

建立坐標(biāo)表文件EX2.DAT,后綴任意,可以依次輸入多段曲線,中間用曲線名稱分開,程序自動(dòng)繪制多條曲線并可標(biāo)注坐標(biāo)表。

“曲線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"坐標(biāo)點(diǎn)文件名"fn""2))

(setqfn(getfiled"坐標(biāo)點(diǎn)文件名"""""2))

)

(setqf(openfn"r"))

(setqp0(getpoint"/n畫線起點(diǎ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)

)

文件存盤后,加載運(yùn)行,相當(dāng)于新增加了坐標(biāo)畫線命令DRLINE,按提示選中存放坐標(biāo)表的文件即可實(shí)現(xiàn)自動(dòng)繪制曲線。

2.2地形切剖面

水電工程設(shè)計(jì)中經(jīng)常遇到在地形圖上切剖面的問題,借助VisualLisp可以實(shí)現(xiàn)快速切剖面。

(1)初始地形圖處理

把帶z坐標(biāo)的地形平面圖進(jìn)行變換,變換后z坐標(biāo)值成為層名,為加快切剖面運(yùn)行速度,把“LWPOLYLINE”和”SPLINE”均轉(zhuǎn)化為”LINE“線,程序如下

(defunc:pltol()

;LWPOLYLINE轉(zhuǎn)化為L(zhǎng)INE

(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轉(zhuǎn)化為L(zhǎng)INE

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

(setqz1(cadddrb1))

(setqglb(listx1y1))

(commandglb)

))

(setqnm(-nm1))

)))

(command"")

(setqn(+n1))

)))

(2)切剖面

輸入剖面編號(hào),在平面地形圖上指定兩點(diǎn)確定剖面剖切線位置,指定剖面圖起點(diǎn),利用AutoCAD的inters函數(shù)搜索剖切線與地形圖的全部交點(diǎn),自動(dòng)計(jì)算交點(diǎn)坐標(biāo),計(jì)算交點(diǎn)與剖面位置起點(diǎn)的距離,按各交點(diǎn)高程和與起點(diǎn)的距離形成剖面圖各點(diǎn)坐標(biāo),即可用本文實(shí)例1坐標(biāo)畫線生成地形圖的剖面。

(defundxtent1()

(setqn0xdzbnil)

(setqxds0)

(setqsh(sslengthe1))

(while(<nsh)

(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剖面號(hào)"))

(setqpt1(getpoint"/n剖切位置起點(diǎn):"))

(setqpt2(getpointpt1"/n剖切位置終點(diǎn):"))

(setqpt3(getpoint"/n剖面圖布置:"))

(setqp01pt3)

(setqe1(ssget"F"(listpt1pt2)));利用AutoCAD的目標(biāo)選擇“F”方式選取與剖切線相交的地形線。

(dxtent);獲取與剖切線相交地形線的坐標(biāo)

(setqmxgc-100)

(setqmngc10000)

(setqm0pmpnil)

(setqnxdsi0)

(while(<in)

(setqcrosp

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

);求剖切線與地形線的交點(diǎn)

(if(/=crospnil)

(progn

(setqdxtgcgc(nth0(nthixdzb)))

(setqmxgc(maxmxgcdxtgcgc))

(setqmngc(minmngcdxtgcgc))

(setqdst(distancept1crosp));剖切線起點(diǎn)與交點(diǎn)的距離

(setqdst(*(/blczdxthtbl)dst))

(setqpmp(cons(listmdstdxtgcgc)pmp))

(setqm(+m1))

))

(setqi(+i1))

))

2.3沿曲線標(biāo)注

在設(shè)計(jì)中會(huì)遇到沿給定曲線進(jìn)行標(biāo)注問題,如平面布置圖中的開挖線符號(hào)沿開挖輪廓的標(biāo)注,剖面圖中巖石符號(hào)沿輪廓線標(biāo)注、點(diǎn)筋標(biāo)注、沿任意曲線進(jìn)行漢字標(biāo)注等。此類問題主要應(yīng)用AutoCAD的Measure或divide命令來解決。兩個(gè)命令的主要差別是前者按指定的長(zhǎng)度在曲線上標(biāo)注,后者按給定的分段數(shù)等分曲線并在等分點(diǎn)處進(jìn)行標(biāo)注。要標(biāo)注的輪廓曲線最好用pline線,要標(biāo)注的符號(hào)預(yù)先做成圖塊,圖塊采用單位塊,執(zhí)行measure或divide命令,選取要標(biāo)注的曲線,指定標(biāo)注符號(hào),分段長(zhǎng)度或分段數(shù)即可完成標(biāo)注,當(dāng)發(fā)現(xiàn)標(biāo)注的符號(hào)太密或太疏時(shí),可以執(zhí)行erase命令選擇P進(jìn)行刪除,比例不合適或符號(hào)方向不正確,可以利用特性編輯器,選中所有標(biāo)注符號(hào),對(duì)標(biāo)注符號(hào)的比例和旋轉(zhuǎn)角度進(jìn)行調(diào)整,直到滿意為止。對(duì)于更高級(jí)的應(yīng)用,可以編制LSP程序,實(shí)現(xiàn)符號(hào)和文字沿任意曲線標(biāo)注。

2.4表格生成

AutoCAD本身沒有表格處理功能,設(shè)計(jì)圖紙中工程量表、鋼筋表等涉及到表格生成的問題可以采用以下方法處理:

(1)直接把Word或Excel文件中的表格直接粘貼到CAD圖形中,修改時(shí)只要雙擊圖中的表格即可進(jìn)入Word或Excel中進(jìn)行編輯修改,修改完成后退出即可返回到AutoCAD中繼續(xù)進(jìn)行設(shè)計(jì),該法優(yōu)點(diǎn)是方便,快捷,易于掌握,可以充分利用Excel的強(qiáng)大計(jì)算功能。缺點(diǎn)是表格在AutoCAD中并不是一個(gè)普通圖元,無(wú)法利用CAD功能對(duì)表格的字高、顏色和線寬進(jìn)行編輯。

(2)編制LSP程序,依次輸入表格標(biāo)題、表格行數(shù)、表格列數(shù)、表格行高和列寬以及表格插入點(diǎn)等參數(shù),可以自動(dòng)生成表格,表格中已經(jīng)按仿Excel形式填入了文字,可以用字處理軟件對(duì)表格中文字進(jìn)行編輯修改。

(defunC:mtab()

(setqtb1niltb2niltb3nil)

(setqrows(getint"表格行數(shù)"))

(setqcols(getint"表格列數(shù)"))

(setqrowh(getreal"行高"))

(setqcolw(getreal"列寬"))

(setqp1(getpoint"/n表格左上角點(diǎ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(<nrows);繪水平線表格

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

(list(carp2)(-(cadrp2)(*rowhn)))"")

(setqn(+n1))

)

(setqn1)

(while(<ncols);繪垂直表格線

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

"")

(setqn(+n1))

)

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

(+(cadrp1)5))"3""0""TITLE")

(setqn0)

(while(<nrows)

(setqm0)

(while(<mcols)

(cond

((<m26)(setqbzstr(chr(+65m))))

((>=m26)(setqbzstr(strcat(chr(+64(/m26)))(chr(+65(-m(*26(/m26))))))))

)

(command"text""m"(list(+(carp1)(*0.5colw)(*mcolw));表格內(nèi)容標(biāo)注

(-(cadrp1)(*0.5rowh)(*nrowh)))

(getvar"TEXTSIZE")"0"(strcatbzstr(itoa(+n1))))

(setqm(+m1))

)

(setqn(+n1))

))

(3)生成鋼筋表

鋼筋表和材料表生成是施工圖設(shè)計(jì)中比較繁瑣的一項(xiàng)工作,很容易出錯(cuò),此處介紹利用程序進(jìn)行鋼筋表和材料表自動(dòng)生成的方法。利用造字程序增加I、II級(jí)鋼筋的直徑標(biāo)注符號(hào)和,以后在其它電腦上只要把EUDC.TTE和E

見下表,增加3個(gè)命令:生成鋼筋表、鋼筋表添加和自動(dòng)生成材料表。

生成鋼筋表時(shí)按指定表格位置生成鋼筋表表頭,根據(jù)提示輸入鋼筋編號(hào)(可以不連續(xù))、鋼筋等級(jí)和直徑如20、16,交互繪制鋼筋簡(jiǎn)圖和標(biāo)注長(zhǎng)度(標(biāo)注長(zhǎng)度可以輸入多種形式如50~200表示長(zhǎng)度等差變化;30,40,50表示一個(gè)編號(hào)多個(gè)鋼筋長(zhǎng)度,),鋼筋根數(shù),構(gòu)件組數(shù),程序自動(dòng)完成表格其余各項(xiàng)(總長(zhǎng)度、重量,對(duì)于I級(jí)鋼筋長(zhǎng)度中自動(dòng)計(jì)入彎鉤長(zhǎng)度)的填寫,備注欄中自動(dòng)填入等差變化鋼筋的等差值。

采集鋼筋表中直徑、等級(jí)和總長(zhǎng)信息,經(jīng)過自動(dòng)分類匯總,生成鋼筋表的材料表。

2.6高程小數(shù)位數(shù)處理

尺寸標(biāo)注小數(shù)位數(shù)很容易調(diào)整,但諸如高程、表格中數(shù)字要調(diào)整則很困難,借助LSP程序的調(diào)整很方便,只要選取需要調(diào)整的數(shù)字,根據(jù)提示輸入需要保留的小數(shù)位數(shù),則程序自動(dòng)對(duì)所有選種數(shù)字進(jìn)行修改。

(defunentsgc()

(setqn0)

(setqsh(sslengthe1))

(while(<nsh)(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"保留小數(shù)位數(shù):"))

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

(setqxnil)

)

2.7應(yīng)用軟件前、后處理

由于軟件升級(jí)滯后,一些常用軟件后處理功能很弱或沒有,可以利用LSP程序結(jié)合AutoCAD增加或簡(jiǎn)化前后處理功能。下面結(jié)合平面滲流分析程序STSE軟件對(duì)其前、后處理功能的實(shí)現(xiàn)進(jìn)行介紹:

(1)前處理

STSE為平面滲流有限元程序,單元?jiǎng)澐趾蛦卧⒐?jié)點(diǎn)編號(hào)工作量最大,可以借助其它通用有限元軟件的前處理功能如Ansis、Algor、SAP84等進(jìn)行初步處理,生成單元、節(jié)點(diǎn)編號(hào)和節(jié)點(diǎn)坐標(biāo),而后按照STSE數(shù)據(jù)文件的格式要求對(duì)數(shù)據(jù)文件進(jìn)行編輯。

(2)后處理

后處理成果主要為:?jiǎn)卧W(wǎng)格圖,浸潤(rùn)線和等勢(shì)線。單元網(wǎng)格圖中有節(jié)點(diǎn)和單元編號(hào),不同滲透系數(shù)的單元采用不同的顏色,以便根據(jù)網(wǎng)格圖直觀地判斷數(shù)據(jù)文件中幾何參數(shù)和材料特性的正誤;

首先分析STSE的輸出結(jié)果文件的格式,搜索并篩選其中主要參數(shù)如單元總數(shù)、節(jié)點(diǎn)總數(shù)和材料總數(shù),把節(jié)點(diǎn)坐標(biāo)和單元信息分別存儲(chǔ),通過對(duì)單元循環(huán)生成單元網(wǎng)格圖。

(defunc:seepmesh()

(iffn

(setqfn(getfiled"滲流結(jié)果文件名"fn""2))

(setqfn(getfiled"滲流結(jié)果文件名"""""2)))

(setqf(openfn"r"))

(setqmd(read-linef))

(while(/=(substrmd258)"單元總數(shù)")

(setqmd(read-linef))

);定位單元總數(shù)

(setqdyzs(atoi(substrmd585)));讀單元總數(shù)

(setqmd(read-linef))

(setqjdzs(atoi(substrmd585)));讀節(jié)點(diǎn)總數(shù)

(setqmd(read-linef))

(setqclh(atoi(substrmd585)));讀材料總數(shù)

(setqm0)

(repeatclh

(setqm(+1m))

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

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

);按材料種類生成圖層名稱

(setqm0n0)

(repeatdyzs;對(duì)單元循環(huán),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";繪制單元網(wǎng)格

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

;標(biāo)注單元號(hào)

(setqm0)

(repeatjdzs

(setqm(+m1))

(setqbzdzb(nthmjdzbb))

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

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

));標(biāo)注節(jié)點(diǎn)號(hào)

(closef)

)

限于篇幅,等勢(shì)線和浸潤(rùn)線生成程序不再贅述。同樣,對(duì)工程設(shè)計(jì)中遇到的其它軟件如:STAB邊坡穩(wěn)定分析、SAP84的輸出文件均可進(jìn)行類似后處理工作。

3結(jié)語(yǔ)

AutoCAD軟件應(yīng)用已經(jīng)在設(shè)計(jì)單位普及,VisualLisp的出現(xiàn)對(duì)于提高Lisp語(yǔ)言的編程效率和AutoCAD應(yīng)用水平具有重要意義。本文涉及的幾個(gè)實(shí)例已經(jīng)在實(shí)際工作中發(fā)揮很大作用,充分說明在工程設(shè)計(jì)當(dāng)中結(jié)合本專業(yè)要求開發(fā)一些簡(jiǎn)單實(shí)用的Lisp小程序可以有效減輕設(shè)計(jì)人員的勞動(dòng)強(qiáng)度,使AutoCAD不僅僅是繪圖工具,而真正成為設(shè)計(jì)人員得心應(yīng)手的高效設(shè)計(jì)平臺(tái)。