版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 使用LISP語(yǔ)言實(shí)現(xiàn)在平面圖中自動(dòng)畫(huà)出橋梁的墩柱標(biāo)識(shí)</p><p> 摘 要:以往在平面圖中畫(huà)墩柱標(biāo)識(shí)是一件費(fèi)時(shí)費(fèi)力,生產(chǎn)力低下的工作,本文討論了如何使用LISP語(yǔ)言實(shí)現(xiàn)該項(xiàng)工作,以極大的節(jié)省時(shí)間,提高共效率。 </p><p> 關(guān)鍵詞: LISP橋梁墩柱 </p><p> 中圖分類(lèi)號(hào):TU997 文獻(xiàn)標(biāo)識(shí)碼: A </p&g
2、t;<p><b> 1.以前工作狀況 </b></p><p> 在平面圖中畫(huà)橋梁墩柱的標(biāo)識(shí)是一件大量的繁瑣的重復(fù)性的工作,以往的做法是: </p><p> 依據(jù)路基寬度確定墩柱的間距和位置,依據(jù)橋梁的斜交角度確定是雙柱墩還是三柱墩,然后把每一種角度的墩柱標(biāo)識(shí)各做成一個(gè)塊(如圖一),再分別一個(gè)一個(gè)的粘貼進(jìn)平面圖,再旋轉(zhuǎn)該塊而成(如圖二)。非常繁
3、瑣而且需要大量的時(shí)間。(當(dāng)然以上方法僅適用于普通橋梁的標(biāo)準(zhǔn)墩柱標(biāo)識(shí),對(duì)于特殊要求的墩柱型式還是以橋梁組提供的為準(zhǔn)。以下LISP語(yǔ)言實(shí)現(xiàn)的也僅是畫(huà)出標(biāo)準(zhǔn)墩柱標(biāo)識(shí)。) </p><p><b> 圖一 </b></p><p><b> 圖二 </b></p><p> 2.LISP語(yǔ)言及編程方法 </p>
4、<p> LISP語(yǔ)言的先天特性就是可以處理AutoCAD中大量重復(fù)性的工作,以節(jié)省時(shí)間和提高效率,下面我們就來(lái)看看該怎么實(shí)現(xiàn)這個(gè)自動(dòng)畫(huà)墩柱的程序呢? </p><p> 我一直認(rèn)為編程最好的方法就是分解法,把要實(shí)現(xiàn)的目標(biāo)分解成若干個(gè)模塊,然后一步一步的去實(shí)現(xiàn)。這有利于減少整個(gè)工作的難度,有利于增加或者減少程序功能,有利于出現(xiàn)問(wèn)題時(shí)的溯源以便于查錯(cuò)糾錯(cuò),而且可以提高不少工作效率。 </p&g
5、t;<p> 這個(gè)程序也是這樣,首先我依據(jù)需求和平時(shí)做這項(xiàng)工作的特性,理出大致的程序結(jié)構(gòu),分別為: </p><p> {主程序:負(fù)責(zé)調(diào)用記錄系統(tǒng)變量和恢復(fù)系統(tǒng)變量,調(diào)用功能實(shí)現(xiàn)子模塊; </p><p> 判斷程序:判斷各變量狀態(tài); </p><p> 功能實(shí)現(xiàn)子程序:使用判斷程序和畫(huà)出墩柱程序,依據(jù)各種狀態(tài)按要求實(shí)現(xiàn)程序功能; </p
6、><p><b> 畫(huà)出墩柱程序。} </b></p><p> 3.自動(dòng)畫(huà)橋墩的具體實(shí)現(xiàn) </p><p><b> 3.1主程序: </b></p><p> 這里記錄了各個(gè)系統(tǒng)變量狀態(tài),由于本程序需要使用visual函數(shù),所以需要預(yù)先加載visual函數(shù)接口,調(diào)用了所需的AutoCAD線(xiàn)型
7、,調(diào)用了功能實(shí)現(xiàn)子程序,且程序運(yùn)行結(jié)束后需恢復(fù)各系統(tǒng)變量。程序?qū)崿F(xiàn)如下: </p><p> (defun c:qd() </p><p> (setvar "cmdecho" 0) </p><p> (command "undo" "be") </p><p> (set
8、q osmode (getvar "osmode")) </p><p> (setvar "osmode" 0) </p><p> (vl-load-com) </p><p> (if(not(tblsearch "ltype" "dashed"))(command &quo
9、t;-linetype""load" "dashed" "" "")) </p><p> (setq f (ssget '((0 . "LWPOLYLINE")))) </p><p> (get_length f) </p><p> (c
10、ommand "_copy" f "" '(0 0 ) '(0 0)) </p><p> (command "_erase" f "") </p><p> (command "_ucs" "w") </p><p> (s
11、etvar "osmode" osmode) </p><p> (command "undo" "e") </p><p><b> (princ) </b></p><p><b> ) </b></p><p> 3.2畫(huà)出墩
12、柱程序: </p><p> 使用功能實(shí)現(xiàn)子程序所確定的位置畫(huà)出墩柱。 </p><p> (defun DrawC(yuanx / ) </p><p> (entmake (list (cons 0"CIRCLE") </p><p> (cons 100 "AcDbEntity") <
13、;/p><p> (cons 100 "AcDbCircle") </p><p> (cons 8 "橋墩") </p><p> (cons 6 "DASHED") </p><p> (cons 48 0.01) </p><p> (list 1
14、0 (car yuanx) (cadr yuanx) 0.0) </p><p> (cons 40 0.8) </p><p> (cons 62 5) </p><p><b> )) </b></p><p> (entmake (list (cons 0"CIRCLE") </p
15、><p> (cons 100 "AcDbEntity") </p><p> (cons 100 "AcDbCircle") </p><p> (cons 8 "橋墩") </p><p> (cons 6 "DASHED") </p>&l
16、t;p> (cons 48 0.01) </p><p> (list 10 (car yuanx) (cadr yuanx) 0.0) </p><p> (cons 40 0.85) </p><p> (cons 62 5) </p><p><b> )) </b></p><
17、p><b> ) </b></p><p> 3.3判斷程序和功能實(shí)現(xiàn)子程序: </p><p> 由于本程序?qū)儆诒容^單一和簡(jiǎn)單的功能實(shí)現(xiàn)集,所以在后來(lái)的調(diào)試完成時(shí),我把判斷程序和功能實(shí)現(xiàn)子程序合并成了一個(gè)模塊。 </p><p> 在該模塊中,使用主程序所確定的選擇集,首先需要用戶(hù)輸入路基的寬度,以確定可使用半幅橋梁墩柱的總寬度
18、。 </p><p> 依據(jù)索引值取出選擇集中的圖元,然后再把圖元轉(zhuǎn)對(duì)象,取得該對(duì)象的長(zhǎng)度、起始坐標(biāo)值、終止坐標(biāo)值以及該對(duì)象的寬度。對(duì)象寬度用以判斷該多義線(xiàn)是否為橋梁邊線(xiàn)。再依據(jù)FlagK值確定該對(duì)象是否需要在下面的轉(zhuǎn)字符串語(yǔ)句中剔除。 </p><p> 把經(jīng)過(guò)以上步驟取出的對(duì)象坐標(biāo)按格式轉(zhuǎn)字符串并連接起來(lái),形成所有符合條件的對(duì)象的坐標(biāo)記錄字符串。 </p><p
19、> 然后進(jìn)入判斷并畫(huà)出墩柱部分,在這里,我們需要判斷所取得對(duì)象是否是處在橋臺(tái)位置,若是,則使用空的(progn)語(yǔ)句忽略該對(duì)象,若不是,則需判斷該對(duì)象與主線(xiàn)交叉角度是否大于等于30°,若大于等于30°則使用三柱墩的型式并計(jì)算出每個(gè)墩柱的坐標(biāo)位置,若不是則使用雙柱墩的型式并計(jì)算出每個(gè)墩柱的坐標(biāo)位置,在這里,還需進(jìn)一步判斷該對(duì)象是整幅橋梁還是左右幅形式的橋梁,以決定在該對(duì)象上所需畫(huà)出總的墩柱個(gè)數(shù)。然后調(diào)用畫(huà)出墩柱
20、程序生成墩柱。 </p><p> 整個(gè)功能模塊的代碼簡(jiǎn)略如下: </p><p> (defun get_length(dyx / ls ls1 ls2 NC FlagK ljkd shum JISHU NXS obj ent nqd nzd ncd njd YX1 YX2 YX3 YX4 YX5 YX6) </p><p> (setq ljkd (get
21、real "\n請(qǐng)輸入路基寬度:")) </p><p><b> ………… </b></p><p><b> ) </b></p><p> 4.具體使用和總結(jié) </p><p> 使用本程序只需用戶(hù)在AutoCAD中預(yù)先加載本程序,輸入qd命令,框選所有的已生成的橋
22、梁多義線(xiàn),根據(jù)提示輸入路基寬度即可自動(dòng)畫(huà)出所需的所有的墩柱標(biāo)識(shí)。使得原本需要一天甚至更長(zhǎng)時(shí)間才能完成的工作,在幾分鐘甚至一分鐘之內(nèi)完成,極大的節(jié)省了勞動(dòng)時(shí)間,提高了勞動(dòng)效率。 </p><p> 以上,程序若有錯(cuò)漏,敬請(qǐng)指正。 </p><p><b> 參考文獻(xiàn): </b></p><p> 1、《AutoLISP語(yǔ)言程序設(shè)計(jì)》郭秀娟,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 總平面圖中的常用圖例
- 橋梁墩柱修補(bǔ)方案
- 淺談橋梁高墩柱的施工
- 橋梁墩柱施工方案
- 橋梁墩柱施工方案
- visual lisp 在 cad 繪制地籍圖中的應(yīng)用
- 平面圖中關(guān)于丁國(guó)力猜想的證明.pdf
- 柱布置平面圖.dwg
- 橋梁墩柱施工技術(shù)交底
- 橋梁墩柱專(zhuān)項(xiàng)施工方案
- 凱撒密碼--c語(yǔ)言實(shí)現(xiàn)
- 柱布置平面圖.dwg
- 柱布置平面圖.dwg
- 市政橋梁墩柱施工方案
- 橋梁墩柱施工質(zhì)量通病的防治
- 無(wú)限平面圖中的哈密頓圈.pdf
- 橋梁墩柱及系梁技術(shù)交底
- 橋梁墩柱首件施工方案
- 感知機(jī)算法的c語(yǔ)言實(shí)現(xiàn)
- 感知機(jī)算法的c語(yǔ)言實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論