當前位置:工程項目OA系統(tǒng) > 建筑OA系統(tǒng) > 工程管理軟件
給排水設(shè)計給排水CAD軟件開發(fā)實例
「摘要」本文介紹了用戶幻燈菜單及功能和開發(fā)方法,并給出了標高標注和圖例繪制程序的開發(fā)方法以及程序注解。
1用戶幻燈菜單簡介
用戶幻燈菜單(下文簡稱幻燈菜單)是在AutoCAD平臺上開發(fā)的一種高效實用的用戶圖形界面,由幻燈和相應(yīng)的AutoLISP實用程序組成。其功能及用法類似于AutoCAD的圖標菜單。調(diào)用時幻燈菜單屏幕上出現(xiàn)一幅幻燈,幻燈顯示不同圖形界面,由幻燈和相應(yīng)的AutoCAD實用程序組成。其功能及用法的功能區(qū)域,每個區(qū)域?qū)?yīng)相應(yīng)的功能,用鼠標點取即可調(diào)用該功能。
幻燈菜單可以用于開發(fā)本部門使用的工具軟件或是商業(yè)化的CAD軟件,可以大大提高開發(fā)效率以及設(shè)計繪圖速度。
下面以我院開發(fā)的標高標注程序為例介紹幻燈菜單的功能:在command:狀態(tài)下從下拉菜單中點取“標高標注1”后屏幕上出現(xiàn)如圖1所示幻燈,用鼠標在某一標高種類格中點擊后幻燈消失,恢復(fù)前一圖面,在提示行中提示“請輸入起點”,給點后又提示:“標高值”,輸入數(shù)值后自動按選擇的種類畫好標高符號并寫好標高值;然后重復(fù)提示“請輸入起點”標注下一個,回車則回到圖1幻燈重復(fù)使用,點EXIT退出。
2幻燈菜單的特點
幻燈菜單可以實現(xiàn)AutoCAD的圖標菜單的各項功能,并且有如下優(yōu)點:
a.制作、修改效率高。制作圖標菜單時,要實現(xiàn)的功能數(shù)與幻燈數(shù)及菜單項的數(shù)量相同。而制作一個幻燈菜單只需要作一個幻燈,幻燈數(shù)量大幅減少,修改也容易得多。
b.使用效率高。為了提高軟件效率,盡量減少擊鍵次數(shù)是今后軟件的發(fā)展方向?;脽舨藛慰梢詫⒍喾N形式的選擇以圖形形式直觀地顯示出來,以供選擇。以標高標注為例,以前的方法是先問標高符號形式,再問方向,而使用幻燈菜單只需點取一次即可。
c.界面美觀,制作靈活多樣,使用方便?;脽舨藛卧谝环脽糁袆澐值墓δ軈^(qū)數(shù)量不限,并且可以根據(jù)需要制作成方格、橫格、豎格、扇型格、圓環(huán)格等多種形式,甚至可以達到可編程序?qū)υ捒虻暮芏喙δ堋?/p>
d.適用性強,移植方便?;脽舨藛芜m用于R9.0版以上的各種中、西文AutoCAD版本。使用幻燈菜單時,由于它包含在用ADS或AutoLISP等語言編制的程序中,所以只要能運行程序即可調(diào)出幻燈菜單,版本升級時不必改變新的菜單文件。而圖標菜單的菜單項必須逐條加入到新的菜單文件中。
e.可以作成定型模塊重復(fù)使用,從而大大提高編程效率。
3幻燈菜單的制作
幻燈菜單的原理是:將AutoCAD繪圖區(qū)分為若干規(guī)則的圖形區(qū)域,每一區(qū)域可以對應(yīng)一組功能,在程序調(diào)用幻燈菜單時,要求用戶根據(jù)需要在某一圖形區(qū)域中選取一點,然后程序自動計算出該點所在的區(qū)域位置,從而調(diào)用所對應(yīng)的程序功能。
點的定位是幻燈菜單制作編程的關(guān)鍵所在,以矩形格幻燈菜單為例,其步驟是:
a.獲取下列AutoCAD系統(tǒng)變量:
viewsize-當前繪圖區(qū)高,用繪圖單位計算;
viewctr-當前繪圖區(qū)中心點坐標值;
vsmax、vsmin-虛擬屏幕的左下角及右上角點坐標值,可以用來求繪圖區(qū)寬高比,從而求出繪圖區(qū)寬度。
b.根據(jù)橫向和豎向分格數(shù),求出每格的寬和高。
c.由點的坐標值分別求出點所在格的橫向和豎向序號。
d.橫向和豎向序號連接即可獲得該格的區(qū)域代碼。
后文將給出我院開發(fā)的標高標注和圖例繪制兩個實例,以下程序均在AutoCADR10至13各版本下順利運行,并已非常成熟。需要指出的是,為了簡化程序,突出重點,刪去了一些諸如容錯或裝飾性的語句,但不影響程序運行。
4實例一———標高標注程序
由程序abg.lsp和幻燈文件acdl.sld文件組成,使用說明已在前面敘述,標題7a給出abg.lsp程序清單及注解
abg.lsp程序包括主程序abg和15個標高標注子函數(shù),子函數(shù)abgl至abg15類似,本文只列出abgl子函數(shù)程序。
5實例二———圖例繪制軟件
本軟件由用戶在6頁幻燈菜單中連續(xù)選取圖例,給出一個插入圖例的左上角點后,程序自動將所選擇的圖例按順序逐項向下排列連續(xù)繪出。軟件由AutoLISP程序atl.lsp和6頁幻燈以及近百個圖塊組成?;脽粑募閍tl1~atl6.sld.圖塊名為atlabc.dwg,atl為前綴,a代表幻燈頁序號,為1~6;b代表幻燈菜單左右代碼,左面為1,右面為2;c代表幻燈菜單中上下序號,分別為1~8.
本軟件設(shè)計的核心思想是通過點的定位計算出的所對應(yīng)的圖例圖塊名,然后插入圖例,多重選擇由表處理語句來完成。本文中第7節(jié)的b部分給出atl.lsp中與幻燈菜單有關(guān)的程序清單及注解。后面還有幾個子函數(shù),由于篇幅有限本文不詳細列出程序,只做簡單介紹:
lastsld子函數(shù)對幻燈名字符串進行運算,求出上一頁幻燈名;
nextsld子函數(shù)對幻燈名字符串進行運算,求出下一頁幻燈名;
setnil子函數(shù)對各變量(必須包括whill)賦空值,并退出程序:
setok子函數(shù)對被選擇的圖例表進行處理,并逐項連續(xù)插入圖例。
6小結(jié)
a.標高標注程序是利用幻燈菜單調(diào)出相應(yīng)的標高標注子程序。
b.圖例程序是利用幻燈菜單給圖例名稱賦值,然后運用字符串處理和表處理技術(shù)求得圖例名稱的列表,從而連續(xù)逐項插入被選中的圖例。
c.圖例幻燈菜單分兩個大區(qū),上面是圖例區(qū),下面是幻燈菜單的操作區(qū),可見幻燈菜單能做成復(fù)雜高效的菜單。
7程序清單
a.abg.lsp程序及注解;
?。╠efunC:BGBZ()
?。╯etqwhil1t)
(whilewhil1)
?。╟ommand″vslide″″acd1″)
?。╥f(setqpp(getpoint″請點取標高種類″))
?。╬rogn
(redraw)
?。╯etqh(getvar″viewsize″)
pcen(getvar″viewsize″)
pmax(getvar″vsmax″)
pmim(getvar″vsmin″)虛擬屏幕左下角)
(setqw(*(/(-(carpmax)(carpmin))
?。?(cadrpmax)(cadrpmin)))h))
?。╯etqpp0(list(-(carpcen)(/w3))
?。?(cadrpcen(
/h3))))
?。╯etqpp1(list(+(carpcen)(/w3))
?。?(cadrpcen)(/h3))))
?。╯etqdx(/w6)dy(/h6))
?。╯etqlx(carpp)ly(cadrpp))
(setqplx(carpp0)ply(cadrpp0))
?。╯etplx(-lxplx)ly(-lyply))
?。╯etpx(fix(1+(/(-pxpx0)dx))))
?。╯etqy(fix(1+(/(-pypy0)dy))))
?。╯etqnn(strcat(itoax)(itoay)))
?。╟ond((=nn14)(abg1))
?。ǎǎ絥n13)(abg2))
?。ǎǎ絥n12)(abg3))
((=nn11)(abg4))
主程序BGBZ開始
設(shè)whil1值為真
當whil1為真時執(zhí)行下列程序
顯示幻燈在幻燈菜單中選點
重畫恢復(fù)原畫面
繪圖區(qū)高
繪圖區(qū)中心點
虛擬屏幕右上角
共獲取系統(tǒng)變量
求繪圖區(qū)寬
有效區(qū)左下角,(有效區(qū)寬和高占繪圖寬和高的三分之二)
有效區(qū)右上角
每格寬和高
PP點的X和Y坐標
左下角點坐標
PP點和PP0點X和Y坐標差;
X方向格序號
Y方向格序號
將X和Y連接
多項選擇條件函數(shù)
nn=13時運行abe2子函數(shù)
?。ǎǎ絥n24)(abg5))
?。ǎǎ絥n23)(abg6))
?。ǎǎ絥n22)(abg7))
?。ǎǎ絥n21)(abg8))
?。ǎǎ絥n34)(abg9))
((=nn33)(abg10))
?。ǎǎ絥n32)(abg11))
?。ǎǎ絥n31)(abg12))
((=nn44)(abg13))
?。ǎǎ絥n43)(abg14))
?。ǎǎ絥n42)(abg15))
((=nn41)(setqwhil1nil))
?。?;cond)
)));progn;if;while;defun
(defunabg1()
?。╳hile(setqp1(getpoint″輸入起點″))
?。╥nitget1)
?。╯etqs1(getreal″標高值:″))
?。╯etqp2(polarp108))
?。╯etqp3(polarp2(/pi4)3.2))
(setqp4(list(+(carp2)0)(+(cadrp2)2.9)))
(if(=s10)(setps2″%%p0.00″)(setqs2(rtoss122)))
?。╟ommand″line″p1″@14<0″″″″line″p3p2
″@3.2<135″″@12.8<0″″″
″text″p42.80s2)));……
b.atl.lsp程序及注解
為11-44格規(guī)定功能,即每一格對應(yīng)一個子函數(shù)
主程序BGBZ結(jié)束
定義abg1子函數(shù)
標高符號起點
不接受空值
標高值
計算各點位置
標高為0時加“±”
畫標高符號
寫標高值command
while;defun-abg1a
bg2~abg15子函數(shù)省略
(defunC:TL()
?。╯etqatllistniltlsld″atla″tlsldn″1″whil1t)
?。╯etqtlpath″/cad/atl″)
(promtp″\n給排水圖例程序—BERIS″)
?。╳hilewhil1
(command″vslide″(strcattlpath″atl″tlsldn))
?。╥nitget1)
?。╯etqpp(getpoint″\n請連續(xù)點取圖例,并點取〈確定〉″))
?。╯etqh(getvar″viewsize″))
?。╯etqpcen(getvar″viewctr″))
圖例繪制主程序
賦初始值
圖例圖塊路徑
提示
當whil1為真執(zhí)行下面程序調(diào)出幻燈(幻燈名由三個變量連接而成,圖2為第一頁)
不接受空值
以下內(nèi)容同標高標注程序
?。╯etqpmax(getvar″vsmax″))
?。╯etqpmin(getvar″vsmin″))
?。╯etqw(*(/(-(carpmax)(carpmin))
(-cadrpmax)(cadrpmin)))h))
?。╯etqpp0(list(-(carpcen)(*w0.44))
(-(cadrpcen)(*h0.26))))
?。╯etqpp1(list(+(carpcen)(*w0.44))
(+(cadrpcen)(*h0.44))))
?。╯etqdx(/(*w0.88)4)dy(/(*h0.7)8))
(setqpx(carpp)py(cadrpp))
?。╯etqpx0(carpp0)py0(cadrpp0))
?。╥f(<pypy0)(dq2)(dq1))))
(defundq1()(if(<px(carpcen))
?。╯etqaorb″1″)
?。╯etqaorb″2″))
(setqxh(fix(1+(/(-pypy0)dy))))
?。╯etqblkname
?。╯trcat″atl″tlsldnaorb(itoaxh))))
?。╠efundq2()
?。╯etqxh1(fix(1+(/(-pxpx0)dx))))
?。╟ond((=xh11)(lastsld))
?。ǎǎ絰h12)(nexts
ld))
((=xh13)(setnil))
?。ǎǎ絰h14)(setok))))
?。╠efunlastsld())
?。╠efunnextsld())
(defunsetnil())
?。╠efunsetok())
如點在上半部分運行dq1,否則運行dq2while;defun圖例主程序結(jié)束定義dq1子函數(shù)
點落在左面aorb為1
點在右面aorb為2;if
計算縱向序號計算圖例圖塊名(由4部分連接組成)
dq1結(jié)束
定義dq2子函數(shù)
計算橫向序號
運行l(wèi)astsld子函數(shù),向前翻頁
運行nextsld子函數(shù),向后翻頁
運行setnil子函數(shù),賦空退出
運行setok子函數(shù),插入圖例
定義lastsld子函數(shù),略
定義nextsld子函數(shù),略
定義setnil子函數(shù),略
定義sitok子函數(shù),略
課程推薦
- 優(yōu)惠不斷,施工技能課程五折
- 【超值預(yù)售】施工前期準備技能匯總
- 施工現(xiàn)場總平面布置要點詳解
- 1中鐵大橋局六公司鄒城市三十米鐵路立交橋最后一根樁基澆筑完成
- 2一級建造師機電知識點:機電工程項目主要大型施工機械類型
- 3混凝土階段指標分解與控制措施
- 4移動式小型城鎮(zhèn)混凝土攪拌站簡要介紹
- 5抓好安全生產(chǎn) 注重五個環(huán)節(jié)——中鐵十一局成渝客專項目三分部
- 62015年一級建造師《水利水電工程管理與實務(wù)》每日一練(10.15)
- 72015招標師考試招標采購案例分析精選16
- 8關(guān)于城市園林綠化行業(yè)改革情況調(diào)研的通知
- 9商業(yè)與IT項目聯(lián)合的五步驟
- 10消防安全技術(shù)綜合能力習(xí)題問答之消防性能化設(shè)計方法與技術(shù)(8)
- 112015年安全工程師考試輔導(dǎo)資料:職業(yè)病報告
- 12衛(wèi)浴企業(yè)如何打開市場
- 132015年招標師考試《法律法規(guī)與政策》:評標紀律
- 14質(zhì)量保證計劃大綱
- 15單層工業(yè)廠房結(jié)構(gòu)安裝方法
- 16建筑工程減少工程簽證的經(jīng)驗教訓(xùn)總結(jié)(6個案例)
- 17淺談城市隧道降噪——南京市玄武湖隧道降噪設(shè)計
- 18建設(shè)工程法規(guī)及相關(guān)知識復(fù)習(xí)題(九)
- 192015年一級建造師考試《建設(shè)工程法規(guī)》:合同的履行
- 20某污水處理廠施工組織設(shè)計109p
- 21一級建造師工程法規(guī)復(fù)習(xí)資料考點解析——物權(quán)的種類
- 222008年一級建造師考試《公路工程》習(xí)題28
- 23大道景觀工程監(jiān)理規(guī)劃71p
- 24公路路基石灰工業(yè)廢渣基層路拌法施工的準備
- 252015年造價工程師:土建工程考點八
- 26粉煤灰制品材料介紹
- 27地暖施工工藝
- 282015年安全工程師《案例》:電梯事故的原因及防范措施
- 29劣質(zhì)工程的市場原因分析
- 30注冊一級建造師復(fù)習(xí)過程中的經(jīng)驗心得(4)
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓