LISP 語言在CAD 道路設(shè)計(jì)中的各種應(yīng)用.doc_第1頁
LISP 語言在CAD 道路設(shè)計(jì)中的各種應(yīng)用.doc_第2頁
LISP 語言在CAD 道路設(shè)計(jì)中的各種應(yīng)用.doc_第3頁
LISP 語言在CAD 道路設(shè)計(jì)中的各種應(yīng)用.doc_第4頁
LISP 語言在CAD 道路設(shè)計(jì)中的各種應(yīng)用.doc_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第三章LISP語言在CAD道路設(shè)計(jì)中的各種應(yīng)用3.1繪制平面任意函數(shù)曲線的AutoLISP程序設(shè)計(jì)在各個(gè)工程設(shè)計(jì)領(lǐng)域中,經(jīng)常要繪制一些曲線,特別是平面曲線,如水工結(jié)構(gòu)的溢流曲線、機(jī)械設(shè)計(jì)的齒輪漸開曲線等。在AutoCAD繪圖軟件中,可以將曲線上的點(diǎn)先計(jì)算好,再用線、多義線、樣條曲線等方法繪制,這種方法需要進(jìn)行大量計(jì)算,工作量較大,如果用EXCEL軟件來輔助計(jì)算,可以減輕工作量;另外,可以針對具體的曲線類型,用AutoCAD內(nèi)嵌的AutoLISP語言,實(shí)現(xiàn)邊計(jì)算邊繪制的功能。用這種方法繪制雖然快捷,但對于不同的曲線,則需編寫同的AutoLISP程序,檢查無誤后才能運(yùn)行,仍顯繁瑣。能否用統(tǒng)一的程序,來實(shí)現(xiàn)各種平面函數(shù)曲線的繪制,我們嘗試?yán)肁utoCAD中強(qiáng)大的表達(dá)式計(jì)算功能來實(shí)現(xiàn)這一目的。3.1.1平面函數(shù)曲線的類型和繪制方法平面函數(shù)曲線即是有簡單函數(shù)表達(dá)式的曲線類型,可考慮經(jīng)常遇到的4類:(1)直角坐標(biāo)下形如y=f(x)的曲線;(2)直角坐標(biāo)下的參數(shù)方程曲線;(3)極坐標(biāo)下形如r=f()的曲線;(4)極坐標(biāo)下的參數(shù)方程曲線。其中,只需增加一個(gè)平凡方程x=x,參數(shù)方程(2)就可以包括相應(yīng)的直接表達(dá)形式(1),同樣(4)可以包括(3)。同時(shí),極坐標(biāo)形式可以通過:x=rcosy=rsin轉(zhuǎn)換為直角坐標(biāo)表達(dá)。因此從本質(zhì)上說,4種類型都可以互相轉(zhuǎn)換,把它們分類的目的是盡量采用函數(shù)的通常表達(dá)形式,以便于使用。繪制時(shí),參照曲線的手工繪制方法,需要給出曲線上的多個(gè)點(diǎn),然后將它們連接起來。若給出的點(diǎn)間隔很小,直接用折線段相連就可很好模擬該曲線,如果間隔較大,可以用樣條曲線連接,使之比較光滑。假設(shè)我們計(jì)算出足夠多的點(diǎn),簡單用折線連接即可,為使該曲線成為一個(gè)整體,可用多義線的方式連接。關(guān)鍵的問題是,如何計(jì)算出曲線上點(diǎn)的坐標(biāo)。由于曲線的函數(shù)表達(dá)式各種各樣,不可能用統(tǒng)一的式子來表示??梢钥紤]從外部輸入表達(dá)式,然后針對該表達(dá)式進(jìn)行計(jì)算,給出相應(yīng)結(jié)果,就能夠解決點(diǎn)坐標(biāo)的計(jì)算問題。但這個(gè)功能的實(shí)現(xiàn)比較困難,幸好AutoCAD為我們提供了CAL命令,可以對任意的表達(dá)式進(jìn)行計(jì)算。該命令由函數(shù)庫文件geomcal.arx提供,支持科學(xué)/工程計(jì)算器上的大多數(shù)標(biāo)準(zhǔn)函數(shù),如三角函數(shù)、指數(shù)、對數(shù)等。若表達(dá)式中有變量,而該變量在程序中已設(shè)定了值,則按該值進(jìn)行計(jì)算。由于該函數(shù)不是LISP內(nèi)部函數(shù),為使之可用,需要用ARXLOAD命令載入文件geomcal.arx,或者在命令行先輸入CAL命令,由系統(tǒng)自動載入,這樣,程序中就可以使用該函數(shù)了??偟某绦蚨x為c:curve(),以便在AutoCAD命令行中與通常的命令一樣使用。程序的總調(diào)用部分為:(arxload geomcal.arx);載入提供表達(dá)式計(jì)算功能的ARX文件(vl- arx- import c:cal);讓命令c:cal能夠使用(princ (1)直角坐標(biāo)下曲線y=f(x).n)(princ (2)直角坐標(biāo)下參數(shù)曲線x=f(i),y=g(i).n)(princ (3)極坐標(biāo)下曲線r=f(theta).n)(princ (4)極坐標(biāo)下參數(shù)曲線theta=f(i),r=g(i).n)(setq ichoice (getint 選擇繪制曲線類型:);選擇曲線類型(if (= ichoice 1) (curve1);調(diào)用曲線繪制類型1(if (= ichoice 2) (curve2);調(diào)用曲線繪制類型2(if (= ichoice 3) (curve3);調(diào)用曲線繪制類型3(if (= ichoice 4) (curve4);調(diào)用曲線繪制類型4根據(jù)用戶選擇的曲線類型,轉(zhuǎn)到相應(yīng)的曲線類型繪制函數(shù)中,依次為直角坐標(biāo)下的普通函數(shù)、參數(shù)方程,極坐標(biāo)下的普通函數(shù)和參數(shù)方程。3.1.2直角坐標(biāo)下函數(shù)y=f(x)的曲線繪制直角坐標(biāo)下繪制函數(shù)曲線y=f(x)定義為AutoLISP子程序curve1,該子程序沒有傳入傳出參數(shù)。程序的第一個(gè)步驟是讀入有關(guān)的參數(shù)和控制變量。首先讀入y=f(x)的表達(dá)式,然后輸入自變量x的變化范圍low,up,接著根據(jù)模擬精度,輸入曲線剖分?jǐn)?shù)目steps,x的變化步長即為step=(up- low)/steps,該步驟相應(yīng)的AutoLISP程序如下:(setq funy (getstring y=f(x)的表達(dá)式:) (setq low(getreal x 的下限值:)(setq up (getreal x 的上限值:)(setq steps (getint 剖分?jǐn)?shù)目:)(setq step (/ (- up low) steps)接下來就開始曲線的繪制,首先啟動繪制多義線的命令,接著自變量x從下限值開始,由f(x)的表達(dá)式計(jì)算y坐標(biāo)值,將該點(diǎn)的坐標(biāo)輸入到命令行,得到曲線的起點(diǎn),然后自變量x遞增一個(gè)步長,計(jì)算下一個(gè)坐標(biāo)點(diǎn),曲線連接到該點(diǎn),如此直到剖分?jǐn)?shù)目結(jié)束,就完成了整個(gè)曲線的繪制,最后用一個(gè)空格退出多義線命令。相應(yīng)的AutoLISP程序如下:(command pline);啟動多義線命令(setq ii 0);循環(huán)變量ii設(shè)初值(setq x low);自變量x設(shè)初值(while (= ii steps);控制循環(huán)數(shù)目(setq y (c:cal funy);對表達(dá)式進(jìn)行計(jì)算,得到y(tǒng)坐標(biāo)值(command (list x y);輸入計(jì)算出的點(diǎn)坐標(biāo)(setq ii (+ 1 ii);循環(huán)變量ii增加1(setq x (+ x step);自變量x遞增一個(gè)步長(command );退出多義線命令3.1.3直角坐標(biāo)下參數(shù)方程曲線繪制直角坐標(biāo)下參數(shù)方程與直接函數(shù)表達(dá)不同的是,引入?yún)⒆兞?,坐?biāo)x和y都表達(dá)為該參變量的函數(shù),這樣,能夠表示的函數(shù)更靈活多樣,形式如下:在曲線繪制時(shí),只需要將變量改為參變量,坐標(biāo)計(jì)算時(shí)對x、y坐標(biāo)都用表達(dá)式計(jì)算即可,相應(yīng)的AutoLISP程序如下:(setq ii 0);循環(huán)變量ii設(shè)初值(setq i low) ;參變量i 設(shè)初值(while (= ii steps) ;循環(huán)控制(setq x (c:cal funx) ;由x=f(i)計(jì)算坐標(biāo)x(setq y (c:cal funy) ;由y=g(i)計(jì)算坐標(biāo)y(command (list x1 y1) ;向命令行輸入點(diǎn)坐標(biāo)(setq ii (+ 1 ii) ;循環(huán)變量ii 增加1(setq i (+ i step) ;參變量i 遞增一個(gè)步長3.1.4 極坐標(biāo)下函數(shù)r = f()曲線繪制極坐標(biāo)下函數(shù)r = f( )的不同之處在于輸入點(diǎn)的坐標(biāo)時(shí),需要用極坐標(biāo)輸入方式,如2030,表示極徑為20,角度為30,可以將得到的坐標(biāo)值轉(zhuǎn)換為字符串,再用角度符號“”連接起來,輸入到命令行。也可以用另外一個(gè)簡便方法,即利用極坐標(biāo)和直角坐標(biāo)之間的轉(zhuǎn)換關(guān)系,變換到直角坐標(biāo)后輸入到命令行,該方法對應(yīng)的AutoLISP程序如下:(setq ii 0) (setq e low) ;設(shè)置極角 的初始值(while (= ii steps) (setq r (c:cal funy) ;計(jì)算極徑r(setq x (c:cal r*cos(e) ;由極徑r 和極角 轉(zhuǎn)換為直角坐標(biāo)下的x 值 (setq y (c:cal r*sin(e) ;由極徑r 和極角 轉(zhuǎn)換為直角坐標(biāo)下的y 值(command (list x y) (setq ii (+ 1 ii) (setq e (+ e step) ;對極角遞增一個(gè)步長3.1.5極坐標(biāo)下參數(shù)方程曲線繪制極坐標(biāo)下參數(shù)方程曲線的繪制,同直角坐標(biāo)下的參數(shù)方程曲線繪制是類似的,即增加一個(gè)用參變量表達(dá)的極角的計(jì)算,相應(yīng)的AutoLISP程序如下:(setq ii 0) (setq i low) ;設(shè)置參變量i 初值為下限值(while (= ii steps) (setq e (c:cal funx) ;由表達(dá)式計(jì)算極角(setq r (c:cal funy) ;由表達(dá)式計(jì)算極徑r(setq x (c:cal r*cos(e) (setq y (c:cal r*sin(e) (command (list x y) (setq ii (+ 1 ii) (setq i (+ i step) ;參變量遞增一個(gè)步長3.1.6總結(jié)利用AutoCAD的表達(dá)式計(jì)算功能,編寫出繪制平面函數(shù)曲線的AutoLISP程序,根據(jù)外部輸入的函數(shù)表達(dá)式,迅速繪制出函數(shù)曲線,且可以靈活控制曲線的模擬精度,避免了以往每繪制一種曲線都要重新編寫程序的麻煩,使用起來十分方便??梢詤⒄毡疚牡淖龇?,繪制三維空間曲線或其他更復(fù)雜的曲線,或?qū)⒈磉_(dá)式計(jì)算功能應(yīng)用到其他設(shè)計(jì)環(huán)境中。3.2基于AutoCAD的線路緩和曲線的自動繪制3.2.1背景鐵路與公路的線路在定線中,由于受地形、地物或其他因素限制,需要改變方向。在改變方向處,相鄰兩直線間要求用曲線連接起來,以保證行車順暢安全這種曲線稱平面曲線。鐵路與公路線上采用的平面曲線主要有圓曲線和緩和曲線,如圖1所示。圓曲線是具有一定曲率半徑的圓??;緩和曲線是連接直線與圓曲線的過渡曲線,其曲率半徑由無窮大(直線的半徑)逐漸變化為圓曲線半徑R。在鐵路干線線路中都要加設(shè)緩和曲線。由于緩和曲線上各點(diǎn)的曲率半徑及圓心均為變數(shù),所以在繪制線路平面圖時(shí),利用繪圖工具無法準(zhǔn)確、有效地繪制出緩和曲線。目前大多數(shù)采用曲線板近似描繪緩和曲線;或者是在AutoCAD中,用多段線近似代替緩和曲線。這些方法作圖不準(zhǔn)確,而且作圖效率低。筆者在實(shí)踐中,利用AutoLISP編程,實(shí)現(xiàn)了基于AutoCAD的緩和曲線加圓曲線的自動繪制。3.2.2緩和曲線的主點(diǎn)及要素1.緩和曲線的形成圖2(b)是沒有加設(shè)緩和曲線的圓曲線。緩和曲線是在不改變直線段方向和保持圓曲線半徑不變的條件下,插入到圓曲線與直線段之間的平面曲線。為了在圓曲線與直線之間加入一段緩和曲線l0,原來的圓曲線需要在垂直于其切線的方向上移動一段距離p(見圖2(a)),因而圓心就由O移動到O1,而原來的半徑R保持不變。2.緩和曲線的主點(diǎn)ZH直緩點(diǎn),即直線與緩和曲線的分界。點(diǎn);HY緩圓點(diǎn),即緩和曲線與圓曲線的分界點(diǎn);QZ曲中點(diǎn),即圓曲線的中點(diǎn);YH圓緩點(diǎn),即圓曲線與緩和曲線的分界點(diǎn);HZ緩直點(diǎn),即緩和曲線與直線的分界點(diǎn);JD兩直線延長線的交點(diǎn)。3.緩和曲線的綜合要素T切線長,即交點(diǎn)至直緩點(diǎn)或緩直點(diǎn)的直線長度;R圓曲線半徑;L曲線(圓曲線+緩和曲線)的長度;0l緩和曲線的長度;E0外矢距,即交點(diǎn)至曲線中點(diǎn)的距離(JD至QZ的距離)轉(zhuǎn)向角,即直線轉(zhuǎn)向角;0緩和曲線的切線角,即緩圓點(diǎn)HY(或圓緩點(diǎn)YH)切線與直緩點(diǎn)(或緩直點(diǎn)HZ)切線的交角,亦即圓曲線HYYH兩端各延長20l部分所對應(yīng)的圓心角;m切垂距,即ZH(或HZ)至自圓心O1向ZH點(diǎn)或HZ點(diǎn)的切線作垂線垂足的距離。p圓曲線移動量,即垂線長與圓曲線半徑R之差。在上述要素中,R,l0為已知要素(可根據(jù)實(shí)際測定或在線路設(shè)計(jì)時(shí)選定),其他要素需根據(jù),R,l0求得。它們的關(guān)系為4.緩和曲線方程式由于緩和曲線的曲率半徑從直線的曲率半徑(無窮大)逐漸變化到圓曲線的曲率半徑R,在曲線上任一點(diǎn)P的曲率半徑與曲線的長度l成反比,如圖3所示,以公式表示為式中C為常數(shù),稱曲率半徑變更率。設(shè)為緩和曲線上任一點(diǎn)的切線角,x,y為這一點(diǎn)的坐標(biāo),為這一點(diǎn)上曲線的曲率半徑,l為從ZH點(diǎn)到這點(diǎn)的緩和曲線長(見圖3)。則有圖3緩和曲線上任一點(diǎn)的坐標(biāo)5.緩和曲線常數(shù)m切垂距,即ZH(或HZ)至自圓心。O1向ZH點(diǎn)或HZ點(diǎn)的切線作垂線垂足的距離。p圓曲線移動量,即垂線長與圓曲線半徑R之差。3.2.3圓曲線加緩和曲線的繪制1.繪制緩和曲線假設(shè)兩直線的轉(zhuǎn)角為逆時(shí)針方向,則自原點(diǎn)(ZH)至交點(diǎn)(JD)為第1條直線;自交點(diǎn)(JD)至緩直點(diǎn)(HZ)為第2條直線。前面已經(jīng)建立了緩和曲線的方程式和緩和曲線常數(shù)的計(jì)算式。緩和曲線方程式的坐標(biāo)系為直角坐標(biāo)系,其坐標(biāo)原點(diǎn)為直緩點(diǎn)(ZH),x軸與直緩點(diǎn)(ZH)的切線方向一致。為了根據(jù)方程式計(jì)算緩和曲線上的點(diǎn)的坐標(biāo)并繪制緩和曲線,需要使AutoCAD的坐標(biāo)系與緩和曲線的坐標(biāo)系重合。為此,單擊“UCS”工具欄中的“對象UCS”按鈕,并在靠近交點(diǎn)(JD處拾取第2條直線,此時(shí)UCS坐標(biāo)系的原點(diǎn)位于交點(diǎn),且x軸與第2條直線重合,方向由交點(diǎn)(JD)指向緩直點(diǎn)(HZ),如圖5所示(此操作在執(zhí)行程序前完成)。然后再將UCS坐標(biāo)系繞z軸旋轉(zhuǎn)-角,此時(shí)UCS的x軸與第1條直線重合,且其方向與緩和曲線所在坐標(biāo)系的x軸方向一致,如圖6所示;再將UCS坐標(biāo)系的原點(diǎn)平移到直緩點(diǎn)(ZH),直緩點(diǎn)在當(dāng)前UCS中的坐標(biāo)為(-TL,0)。此時(shí)UCS與緩和曲線的坐標(biāo)系完全重合,如圖7所示。于是可以利用緩和曲線方程式,計(jì)算緩和曲線上的點(diǎn)的坐標(biāo),并利用樣條曲線命令將各點(diǎn)連成光滑的曲線。此過程可以通過循環(huán)語句來完成。AutoLISP程序代碼如下:(defunc:hhqx(/RL0alphaqxm p TL E0 X0 y0 alpha1 L L2 L5 P0 hhqx1 hyx hyy yhx yhy qzx qzy p1) (setq R (getreal n 輸入圓曲線的曲率半徑R:)(setqr L0 (getreal n 輸入緩和曲線長度L0:)(setq alpha (getreal n 輸入轉(zhuǎn)向角 :)(setq alpha1 (/ (* alpha pi) 180) ;求緩和曲線常數(shù):m ,TL , p , 0 x , 0 y(setq m (- (/ L0 2) (/ (* L0 L0 L0) (* 240 (* R R)(setq p (/ (* L0 L0) (* 24 R) (setq TL (+ m (* (+ R p) (/ (sin(/ alpha1 2) (cos(/ alpha1 2) (setq x0 (- L0 (/ (* L0 L0 L0) (* 40 R R) y0 (/ (* L0 L0) (* 6 R) ;計(jì)算緩圓點(diǎn)的坐標(biāo)(command ucs _z (- 0 alpha)(command ucs or (list (- 0 TL) 0)(setq L 0.)(command spline)(while ( L L0) (setq L2 (* L L) L5 (* L2 L2 L)(setq x (- L (/ L5 (* 40 R R L0 L0) y (/ (* L2 L) (* 6 R L0)(command (list x y) (setq L (+ L 5) )(setq x x0 y y0 p0 (list x y)(command )(setq hhqx1 (ssget L)2.圓曲線的繪制圓曲線為部分圓弧,可以用畫圓弧命令中的“三點(diǎn)式”來繪制。建立圖8所示的坐標(biāo)系(首先恢復(fù)到上一個(gè)UCS,然后繞Z軸旋轉(zhuǎn)-/2),則圓曲線在坐標(biāo)系中對稱于Y軸,圓弧的兩端點(diǎn)(HY點(diǎn)和YH點(diǎn))和曲線中點(diǎn)(QZ點(diǎn))坐標(biāo)可按下列公式計(jì)算:(setq hyx (- 0 (- (* (- TL x0) (cos (abs(/ alpha1 2)(* y0 (sin (abs(/ alpha1 2)(setq hyy (+ (* (- TL x0) (sin (abs(/ alpha1 2)(* y0 (cos (abs(/ alpha1 2)(setq E0 (- (/ (+ R p) (cos(/ alpha1 2) R);計(jì)算緩和曲線常數(shù)E0的值(setq qzx 0 qzy E0);計(jì)算曲中點(diǎn)的坐標(biāo)(setq yhx (- 0 hyx) yhy hyy);計(jì)算圓緩點(diǎn)的坐標(biāo)(setq p3 (list hyx hyy) p2 (list qzx qzy) p1 (list yhx yhy) (command arc p1 p2 p3);畫圓曲線(command mirror hhqx1 (list 0 0) p2 N); 用鏡像的方法繪制從圓緩點(diǎn)到緩直點(diǎn)的緩和曲線。3.3利用AutoLISP語言繪制帶緩和曲線的鐵路曲線平面圖3.3.1應(yīng)用背景在鐵路工務(wù)部門的日常鐵路設(shè)計(jì)、施工、維護(hù)工作中,經(jīng)常需要繪制鐵路線路平面圖,而鐵路線路平面圖繪制的難點(diǎn)在于繪制帶緩和曲線的鐵路曲線。由于緩和曲線的坐標(biāo)位置是通過高次方程計(jì)算得來,具有非線性的特點(diǎn),因此很難在圖紙上繪制出準(zhǔn)確的位置。無論是使用手工制圖或在計(jì)算機(jī)上通過AutoCAD制圖,技術(shù)人員通常是通過近似位置的方法繪制,這種方法不光需要花費(fèi)大量的時(shí)間用于曲線要素、曲線起訖里程的計(jì)算,而且線位坐標(biāo)也不準(zhǔn)確。AutoCAD不但具有完善的繪圖功能、良好的用戶界面,而且允許用戶進(jìn)行二次開發(fā)?;贏utoCAD自帶的Visual LISP(VLISP)編程軟件環(huán)境下,利用AutoLISP語言進(jìn)行二次開發(fā),可以實(shí)現(xiàn)帶緩和曲線的鐵路曲線平面圖自動繪制。3.3.2 AutoLISP程序開發(fā)思路根據(jù)帶緩和曲線的鐵路曲線特點(diǎn),本著為使用者創(chuàng)造一個(gè)良好的人機(jī)交互環(huán)境,本程序在每一個(gè)步驟都設(shè)計(jì)了文字提示,用戶只需按照Auto-CAD文本框中的提示輸入已知參數(shù),就能完成整個(gè)繪制過程。整個(gè)計(jì)算過程采用模塊化設(shè)計(jì)思想,以消息觸發(fā)方式編程,將程序分成3個(gè)子程序模塊,使整個(gè)程序結(jié)構(gòu)合理且易于維護(hù)。3.3.3曲線基本方程式1.緩和曲線常數(shù)計(jì)算R曲線半徑;lo緩和曲線長;曲線偏角;o緩和曲線的切線角,即HY(或YH)點(diǎn)的切線與ZH(或HZ)點(diǎn)切線的交角; o緩和曲線的總偏角;m切垂距,即ZH(或HZ)都圓心O向切線所做垂線垂足的距離;p圓曲線內(nèi)移量,為垂線長與圓曲線半徑R之差。2.曲線要素計(jì)算T切線長;L曲線長;Eo外矢距;q切曲差。3.坐標(biāo)計(jì)算以ZH(或HZ)為坐標(biāo)原點(diǎn),切線為x軸,垂直切線方向?yàn)閥軸:3.4自動繪制緩和曲線加圓曲線的方法探討3.4.1問題的提出鐵路線路由于受地形、地物或其他因素的限制,往往需要改變方向。在線路改變方向處,相鄰兩條直線間要求用曲線連接起來,這種曲線稱為平面曲線,它主要分為圓曲線和緩和曲線。圓曲線是具有一定曲率半徑的圓弧,緩和曲線是連接直線與圓曲線的過渡曲線,其曲率半徑由無窮大直線的半徑(逐漸變化為圓曲線半徑。鐵路線路平面圖上要繪出圓曲線和緩和曲線。在手工繪圖時(shí)代,曲線采用標(biāo)有半徑的曲線板和直尺畫出,誤差很大,但在計(jì)算機(jī)繪圖時(shí)代,經(jīng)常需要精確地繪出線路的圓曲線和緩和曲線,以便準(zhǔn)確地算出線路中心至地面上某點(diǎn)的距離以及復(fù)線地段兩條曲線間的距離,這對于選線和優(yōu)化設(shè)計(jì)有很重要的作用。3.5AutoCAD在公路路線繪圖中的應(yīng)用3.5.1背景近年來AutoCAD技術(shù)飛速發(fā)展,在公路設(shè)計(jì)中的應(yīng)用十分廣泛,文章就繪制公路緩和曲線及里程樁的標(biāo)注和加文字注解等幾方面進(jìn)行闡述。我們采用AutoCAD來進(jìn)行公路設(shè)計(jì)。我們利用測量得出數(shù)據(jù)A點(diǎn)坐標(biāo)為X=213.7748,Y=92.1117;B點(diǎn)坐標(biāo)為X=313.7748,Y=92.1117;C點(diǎn)坐標(biāo)為X=399.6787,Y=143.3026,繪制路線導(dǎo)線。利用測量得出數(shù)據(jù)1點(diǎn)坐標(biāo)X=232.9548,Y=92.1117;2點(diǎn)坐標(biāo)X=285.3608,Y=94.4667;3點(diǎn)坐標(biāo)X=311.8101,Y=99.2371;4點(diǎn)坐標(biāo)X=336.9780,Y=108.6801;5點(diǎn)坐標(biāo)X=383.6319,Y=133.7401繪制與路線導(dǎo)線相切的緩和曲線。繪制完的成圖如圖1。3.5.2含緩和曲線的平曲線繪制分析:由于AutoCAD不能直接繪制緩和曲線,在AutoCAD中既可以用Pline(多義線)命令繪制通過1、2、3、4、5點(diǎn)的折線,然后,再用Pedit(多義線編輯)命令選擇其中“S(樣條曲線化)”命令選項(xiàng),這樣可以把折線變成光滑的樣條曲線。另外,也可以采用真樣條曲線命令繪制。而AutoCAD中的真樣條曲線最接近公路平曲線的形狀,在常用比例尺的情況下,肉眼分辨不出兩者在圖紙上的區(qū)別,所以我們采用真樣條曲線命令Spline繪制緩和曲線。下面我們分兩步來完成含緩和曲線的平曲線的繪制。繪制路線導(dǎo)線。利用Pline(多義線)命令繪制,在命令行輸入Pline命令,根據(jù)命令行提示依次輸入A、B、C點(diǎn)的坐標(biāo)。繪制步驟如下:命令:_pline指定起點(diǎn):213.7748,92.1117指定下一個(gè)點(diǎn)或圓?。ˋ)/半寬(H)/長度(L)/放棄(U)/寬度(W):313.7748,92.1117指定下一個(gè)點(diǎn)或圓?。ˋ)/閉合(C)/半寬(H)/長度(L)/放棄(U)/寬度(W):399.6787,143.3026結(jié)束后得到圖1中的ABC折線。繪制通過1、2、3、4、5主點(diǎn)與路線導(dǎo)線相切的含緩和曲線的平曲線。使用真樣條曲線命令繪制含緩和曲線的平曲線?;静襟E如下:命令:spline指定第一個(gè)點(diǎn)或?qū)ο螅∣):232.9548,92.1117指定下一點(diǎn):285.3608,94.4667指定下一點(diǎn)或閉合(C)/擬合公差(F):311.8101,99.2371指定下一點(diǎn)或閉合(C)/擬合公差(F):336.9780,108.6801指定下一點(diǎn)或閉合(C)/擬合公差(F):383.6319,133.7401指定下一點(diǎn)或閉合(C)/擬合公差(F):指定起點(diǎn)切向:232.9548,92.1117指定端點(diǎn)切向:383.6319,133.7401在這里我們要注意起點(diǎn)切向和端點(diǎn)切向的選擇,它們分別是1點(diǎn)坐標(biāo)和5點(diǎn)坐標(biāo)。到此我們已把含緩和曲線的平曲線部分繪制完成。3.5.3里程樁的標(biāo)注和圖形的文字注解我們要在1、2、3、4、5點(diǎn),5個(gè)主點(diǎn)繪制5個(gè)曲線主點(diǎn)樁,可以分為以下幾個(gè)步驟進(jìn)行。1.繪制曲線路段的法線我們可以利用偏移命令(Offset)把緩和曲線向曲線彎道內(nèi)側(cè)作偏移,偏移距離為5個(gè)單位。步驟如下:命令:_offset指定偏移距離或通過(T):5選擇要偏移的對象或:我們用點(diǎn)命令(Point)繪制出1、2、3、4、5點(diǎn)。把對象捕捉模式中的垂足捕捉模式和結(jié)點(diǎn)捕捉模式選中。2.曲線主點(diǎn)樁和里程標(biāo)注利用繪圖菜單下的文字命令中的單行文字命令,以1點(diǎn)樁號標(biāo)注為例,具體操作步驟如下:命令:_dtext指定文字的旋轉(zhuǎn)角度:90輸入文字:k10+119.067注意,文字的起點(diǎn)選在適當(dāng)?shù)奈恢?,旋轉(zhuǎn)角度選擇合適的角度。2、3、4、5點(diǎn)的樁號標(biāo)注與其相同。標(biāo)注效果中的1、2、3、4、5點(diǎn)上面的文字標(biāo)注。以上事例為AutoCAD在公路設(shè)計(jì)中的一個(gè)例子,我們應(yīng)該更加努力的去思考和研究如何利用CAD去解決公路設(shè)計(jì)中的現(xiàn)實(shí)問題。3.6 Visual lisp 程序在土方斷面圖繪制上的應(yīng)用3.6.1前沿與介紹AutoCAD是使用十分廣泛的計(jì)算機(jī)輔助設(shè)計(jì)繪圖軟件,面世以來,其豐富的繪圖功能,強(qiáng)大的編輯功能和良好的用戶界面深受廣大工程設(shè)計(jì)制圖人員的普遍歡迎。然而大量重復(fù)性工作又使得工程設(shè)計(jì)制圖人員為之頭疼。CAD系統(tǒng)提供軟件的界面、環(huán)境、核心算法、數(shù)據(jù)庫及設(shè)計(jì)需要相關(guān)的、較專業(yè)的支持軟件,而在工程測量中CAD無法方便的繪制工程所需的斷面圖、示意圖等。Visual lisp是由Autodesk公司開發(fā)的一種lisp程序語言,Visual lisp功能非常強(qiáng)大,除了本身提供豐富的功能函數(shù)外,還可以使用Activex進(jìn)行組件方式的編程,充分使用第三方所提供的Activex,使得Visual lisp幾乎是無所不能,如可以進(jìn)行數(shù)據(jù)庫訪問、生成Word文檔、Excel報(bào)表等等。Visual lisp是個(gè)可視化的確LISP語言開發(fā)環(huán)境,適合開發(fā)小型規(guī)模的應(yīng)用程序軟件。3.6.2 程序設(shè)計(jì)與實(shí)現(xiàn)1.簡介該程序的運(yùn)行是以AutoCAD2005為平臺,利用Visual lisp語言進(jìn)行的程序開發(fā),讀取我院自行開發(fā)的斷面法土方量計(jì)算程序的斷面數(shù)據(jù),實(shí)現(xiàn)斷面序號、斷面樁號、原現(xiàn)斷面圖的快速自動繪制。2.斷面數(shù)據(jù)格式394斷面?zhèn)€數(shù)1,0.0,6,4斷面序號,斷面樁號,原斷面?zhèn)€數(shù),現(xiàn)斷面?zhèn)€數(shù)18.59,307.6高程,距離(原斷面min)18.74,317.0高程,距離17.56,317.017.56,326.019.11,326.019.11,330.0高程,距離(原斷面max)19.11,330.0高程,距離(現(xiàn)斷面max)19.50,329.6高程,距離19.50,307.518.59,307.6高程,距離(現(xiàn)斷面min)2,8.0,2,2斷面序號,斷面樁號,原斷面?zhèn)€數(shù),現(xiàn)斷面?zhèn)€數(shù)18.59,310.018.59,331.019.50,331.019.50,310.03.設(shè)計(jì)思路4.源程序(DEFUN C:dmv ()(setvar cmdecho 0)(setq fd (open (getfiled 打開數(shù)據(jù) dat 16) R) (setq n (READ-LINE FD) n (read n) a 0 jgjs nil pt1 nil pt2 nil abc nil ) (setq i 0 j 0 )(SETQ ABC (GETINTn 注記樁號(2)都要注記(3)(if (= abc nil) (setq abc 1) (alert 距離比例尺為1:1000,高程比例要自己設(shè)定)(setq bl (getint n 請輸入高程比例尺)(if (= bl nil) (setq bl 500)(setq jg (getint n 請輸入斷面間隔)(if (= jg nil) (setq jg 30)(setq pt0 (getpoint n 請輸入斷面圖的基點(diǎn):)(if (= pt0 nil) (setq pt0 (list 0 0) (setq pt0 (getpoint)(setq bln (/ 1000 bl)(while (and (= i 0) (= i n) (setq xx (READ-LINE FD)(setq xx1 (read (strcat ( xx )(setq a 2)(if (/= (nth 2 xx1) nil)(progn

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論