使用lisp語言實(shí)現(xiàn)在平面圖中自動畫出橋梁的墩柱標(biāo)識_第1頁
已閱讀1頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  使用LISP語言實(shí)現(xiàn)在平面圖中自動畫出橋梁的墩柱標(biāo)識</p><p>  摘 要:以往在平面圖中畫墩柱標(biāo)識是一件費(fèi)時費(fèi)力,生產(chǎn)力低下的工作,本文討論了如何使用LISP語言實(shí)現(xiàn)該項(xiàng)工作,以極大的節(jié)省時間,提高共效率。 </p><p>  關(guān)鍵詞: LISP橋梁墩柱 </p><p>  中圖分類號:TU997 文獻(xiàn)標(biāo)識碼: A </p&g

2、t;<p><b>  1.以前工作狀況 </b></p><p>  在平面圖中畫橋梁墩柱的標(biāo)識是一件大量的繁瑣的重復(fù)性的工作,以往的做法是: </p><p>  依據(jù)路基寬度確定墩柱的間距和位置,依據(jù)橋梁的斜交角度確定是雙柱墩還是三柱墩,然后把每一種角度的墩柱標(biāo)識各做成一個塊(如圖一),再分別一個一個的粘貼進(jìn)平面圖,再旋轉(zhuǎn)該塊而成(如圖二)。非常繁

3、瑣而且需要大量的時間。(當(dāng)然以上方法僅適用于普通橋梁的標(biāo)準(zhǔn)墩柱標(biāo)識,對于特殊要求的墩柱型式還是以橋梁組提供的為準(zhǔn)。以下LISP語言實(shí)現(xiàn)的也僅是畫出標(biāo)準(zhǔn)墩柱標(biāo)識。) </p><p><b>  圖一 </b></p><p><b>  圖二 </b></p><p>  2.LISP語言及編程方法 </p>

4、<p>  LISP語言的先天特性就是可以處理AutoCAD中大量重復(fù)性的工作,以節(jié)省時間和提高效率,下面我們就來看看該怎么實(shí)現(xiàn)這個自動畫墩柱的程序呢? </p><p>  我一直認(rèn)為編程最好的方法就是分解法,把要實(shí)現(xiàn)的目標(biāo)分解成若干個模塊,然后一步一步的去實(shí)現(xiàn)。這有利于減少整個工作的難度,有利于增加或者減少程序功能,有利于出現(xiàn)問題時的溯源以便于查錯糾錯,而且可以提高不少工作效率。 </p&g

5、t;<p>  這個程序也是這樣,首先我依據(jù)需求和平時做這項(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)子程序:使用判斷程序和畫出墩柱程序,依據(jù)各種狀態(tài)按要求實(shí)現(xiàn)程序功能; </p

6、><p><b>  畫出墩柱程序。} </b></p><p>  3.自動畫橋墩的具體實(shí)現(xiàn) </p><p><b>  3.1主程序: </b></p><p>  這里記錄了各個系統(tǒng)變量狀態(tài),由于本程序需要使用visual函數(shù),所以需要預(yù)先加載visual函數(shù)接口,調(diào)用了所需的AutoCAD線型

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畫出墩

12、柱程序: </p><p>  使用功能實(shí)現(xiàn)子程序所確定的位置畫出墩柱。 </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ū)儆诒容^單一和簡單的功能實(shí)現(xiàn)集,所以在后來的調(diào)試完成時,我把判斷程序和功能實(shí)現(xiàn)子程序合并成了一個模塊。 </p><p>  在該模塊中,使用主程序所確定的選擇集,首先需要用戶輸入路基的寬度,以確定可使用半幅橋梁墩柱的總寬度

18、。 </p><p>  依據(jù)索引值取出選擇集中的圖元,然后再把圖元轉(zhuǎn)對象,取得該對象的長度、起始坐標(biāo)值、終止坐標(biāo)值以及該對象的寬度。對象寬度用以判斷該多義線是否為橋梁邊線。再依據(jù)FlagK值確定該對象是否需要在下面的轉(zhuǎn)字符串語句中剔除。 </p><p>  把經(jīng)過以上步驟取出的對象坐標(biāo)按格式轉(zhuǎn)字符串并連接起來,形成所有符合條件的對象的坐標(biāo)記錄字符串。 </p><p

19、>  然后進(jìn)入判斷并畫出墩柱部分,在這里,我們需要判斷所取得對象是否是處在橋臺位置,若是,則使用空的(progn)語句忽略該對象,若不是,則需判斷該對象與主線交叉角度是否大于等于30°,若大于等于30°則使用三柱墩的型式并計(jì)算出每個墩柱的坐標(biāo)位置,若不是則使用雙柱墩的型式并計(jì)算出每個墩柱的坐標(biāo)位置,在這里,還需進(jìn)一步判斷該對象是整幅橋梁還是左右幅形式的橋梁,以決定在該對象上所需畫出總的墩柱個數(shù)。然后調(diào)用畫出墩柱

20、程序生成墩柱。 </p><p>  整個功能模塊的代碼簡略如下: </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請輸入路基寬度:")) </p><p><b>  ………… </b></p><p><b>  ) </b></p><p>  4.具體使用和總結(jié) </p><p>  使用本程序只需用戶在AutoCAD中預(yù)先加載本程序,輸入qd命令,框選所有的已生成的橋

22、梁多義線,根據(jù)提示輸入路基寬度即可自動畫出所需的所有的墩柱標(biāo)識。使得原本需要一天甚至更長時間才能完成的工作,在幾分鐘甚至一分鐘之內(nèi)完成,極大的節(jié)省了勞動時間,提高了勞動效率。 </p><p>  以上,程序若有錯漏,敬請指正。 </p><p><b>  參考文獻(xiàn): </b></p><p>  1、《AutoLISP語言程序設(shè)計(jì)》郭秀娟,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論