給排水CAD計算繪圖一體化
目前國內(nèi)已有十幾家單位相繼推出了在AutoCAD基礎(chǔ)上開發(fā)的給排水設(shè)計軟件包,但熟悉和掌握作為通用圖形平臺的AutoCAD,仍是每個應(yīng)用計算機進行設(shè)計的人員的基本技能。而且,由于現(xiàn)有的軟件包不一定符合用戶的設(shè)計習(xí)慣,其計算功能也偏于簡單,以至于不能滿足給排水專業(yè)設(shè)計的特定要求,致使多數(shù)設(shè)計人員重新回到 AutoCAD平臺。因此,我們需要開發(fā)符合設(shè)計習(xí)慣的計算繪圖一體化程序。
1 給排CAD的特點
用AutoCAD從事給排水工程設(shè)計,在繪圖方面其應(yīng)用一般是復(fù)制條件圖、繪制工藝圖等,本專業(yè)重復(fù)繪圖相對較少。從計算上看除個別情況外,通常計算簡捷而成熟,手冊眾多、計算無處不有。諸如各種水量、流量計算,給排水管線水力計算,水箱、水池容積計算,管網(wǎng)平差計算等,經(jīng)驗數(shù)據(jù)大量用于設(shè)計,而專門的計算程序所得結(jié)果數(shù)據(jù)亦難以直接用于繪圖。由此可知在設(shè)計中引入CAD,把計算融入繪圖應(yīng)是給排水專業(yè)計算機應(yīng)用的方向之一。
2 給排CAD計算繪圖一體化程序
計算繪圖一體化的主導(dǎo)思想在于交叉進行計算與繪圖,提高自動化程度,提高計算的精度與速度,避免數(shù)據(jù)的重復(fù)輸入,提高設(shè)計效率。在CAD平臺上自動提取計算數(shù)據(jù),用戶參與意見將計算結(jié)果直接用于繪圖、標(biāo)注或再計算。若將要解決的某個問題作為一個單元模塊,分步編程、集成應(yīng)用,可提高程序的實用性、適應(yīng)性、靈活性。其結(jié)構(gòu)化程序功能及簡要說明見圖1。
給排CAD計算繪圖一體化的實現(xiàn)有賴于給排水專業(yè)人員和計算機人員的進一步協(xié)作,選擇合適的高級語言、采用適當(dāng)?shù)某绦蚪Y(jié)構(gòu)、正確的計算方法,運用數(shù)據(jù)共享和通訊技術(shù),經(jīng)過長期實踐才能完成。實現(xiàn)圖1所示的計算繪圖一體化功能,應(yīng)把設(shè)計任務(wù)模塊從上到下細(xì)分,以一個設(shè)計任務(wù)為單元編程,在特定的語言環(huán)境中經(jīng)編輯、編譯、調(diào)試等步驟來完成計算繪圖一體化程序的設(shè)計。
3 實現(xiàn)方法
3.1 開發(fā)環(huán)境
AutoCAD中常用二次開發(fā)的AutoLISP應(yīng)用語言是一種解釋性語言。因圖形處理功能強而備受使用者歡迎,不足之處是當(dāng)圖形內(nèi)容多、計算量大時處理速度慢。為提高計算速度與精度宜選擇ADS( AutoCAD Development System)開發(fā)系統(tǒng)、ARX(AutoCAD Runtime eXtension)開發(fā)環(huán)境或與DXF(Drawing eXchange Format)進行交換的其它高級語言。其中ADS是AutoCAD的C語言環(huán)境,既能充分利用C語言固有的強大功能,又向開發(fā)者提供了豐富的應(yīng)用程序接口例程,功能完整、接口簡單、效率高、速度快、便于多模塊組合。用ADS開發(fā)的應(yīng)用程序在R11以上的版本運行即可,與AutoCAD 13.0版本以上提供的ARX具有相同的開發(fā)環(huán)境(使用C語言環(huán)境編程)。故ADS程序具有較好的移植性、延續(xù)性、通用性。
3.2 ADS程序的組成及工作流程
ADS程序除輸入輸出語句外與C語言程序類似,而圖形處理功能部分與AutoLISP語言相關(guān)。由于它并非最低層代碼,必須由AutoLISP解釋器加載,因此一個完整的ADS應(yīng)用程序除包含用戶為解決某個問題而設(shè)計外部函數(shù)外,還必須能支持并且使用ADS環(huán)境所定義的與AutoLISP的接口程序。這個接口程序要求按一定的次序,使用確定的值來調(diào)用確定的ADS庫函數(shù),其工作流程見圖2。
由main()函數(shù)調(diào)用系統(tǒng)提供的ads_init函數(shù)初始化ADS和AutoLISP的界面,并通過新建立的通訊鏈用 ads_link通知 AutoLISP準(zhǔn)備接受調(diào)用請求。當(dāng)收到函數(shù)定義請求碼(RQXLOAD)時,ADS用ads_defun函數(shù)定義自己的外部函數(shù);若收到函數(shù)調(diào)用請求碼(RQSUBR),則執(zhí)行某個已加載的外部函數(shù)。其中RSRSLT表示接收、處理AutoLISP請求;RSERR表示ADS程序出錯。
外部函數(shù)是ADS應(yīng)用程序自己定義的可在命令行執(zhí)行或被AutoLISP調(diào)用的函數(shù),一旦完成應(yīng)用程序的裝載,執(zhí)行ADS程序就像執(zhí)行AutoLISP程序一樣。如把圖1中設(shè)計任務(wù)模塊細(xì)分后定義成一個外部函數(shù),通過外部函數(shù)調(diào)用設(shè)計依據(jù)、計算、繪圖等模塊函數(shù)來實現(xiàn)多模塊的集成應(yīng)用。因此外部函數(shù)是用戶編程的主要內(nèi)容,而接口程序是定制ADS應(yīng)用程序的基本平臺。
4 程序舉例
以建筑給水系統(tǒng)水力計算為例:輸入給水當(dāng)量即得設(shè)計秒流量;選定管材、管徑,便可計算流速、校驗結(jié)果。若符合設(shè)計要求可按圖形提取管長,計算沿程水頭損失,并將計算結(jié)果賦給對應(yīng)管段,為系統(tǒng)圖的繪制及標(biāo)注作好準(zhǔn)備;然后計算局部水頭損失,最后輸入高差及流出水頭等得系統(tǒng)所需水壓總值。為此編寫的ADS源程序名為SLJS.C(程序略)。由外部函數(shù)SLSJ()有序地調(diào)用設(shè)計依據(jù)確定、計算管徑的尋找、計算、繪圖、標(biāo)注以及管網(wǎng)類型選擇等不同功能的模塊函數(shù),完成實例中計算、繪圖一體化設(shè)計,具體如下:
1.編譯:將程序SLJS.C拷貝至AutoCAD環(huán)境ADS目錄下,用W90SAMP.BAT編譯產(chǎn)生SLJS.EXP文件或用Borland C編譯產(chǎn)生可執(zhí)行文件 SLJS.EXE。
2.裝載:與裝載AutoLISP程序一樣,有2種方法。
(1)修改AutoCAD的標(biāo)準(zhǔn)菜單文件ACAD.MNU,使其置于AutoCAD的下拉式菜單或屏幕菜單中執(zhí)行;也可放入用戶自制的實用菜單內(nèi)執(zhí)行,如圖1中建筑給排水生活、生產(chǎn)給水設(shè)計的子菜單。
(2)在Command:行,用格式為(XLOAD “SJLS.EXP”)的命令載入。
3.執(zhí)行及結(jié)果:點取菜單或執(zhí)行SJLS命令,繪制某住宅樓給水系統(tǒng)圖并計算該系統(tǒng)所需壓力值。該住宅樓有8層,共32戶用水,每戶給水當(dāng)量為4,共4根給水立管。其中設(shè)計秒流量公式中的系數(shù)α=1.02、k=0.0 045,管長及高差等見圖3。
用該程序完成圖3中最不利主干管的繪制與標(biāo)注(SL-1立管上點①與供水點②之間的管路),同時計算得所需水壓349kPa(34.892m H2O)。支管標(biāo)記在繪制主干管時作為圖塊插入,其余部分由AutoCAD命令編輯而得,見圖3。
也可用此程序?qū)Τ蓤D后的給水系統(tǒng)進行計算或標(biāo)注。若將計算結(jié)果按表格方式輸出即得計算書,對復(fù)雜管道系統(tǒng)的水力計算,只需將以前的計算結(jié)果作為下次計算的基礎(chǔ)數(shù)據(jù)便可分步完成全部的計算與繪圖,但應(yīng)進一步擴充和完善程序。
5 小結(jié)
5.1 計算繪圖一體化程序較好地解決了經(jīng)驗數(shù)據(jù)的采用多,計算對精度要求不高的作法。克服了專門計算程序的結(jié)果數(shù)據(jù)難以直接用于繪圖和標(biāo)注的問題。
5.2 在計算繪圖一體化程序中把能用公式表達(dá)的手冊內(nèi)容自然地納入了計算機,節(jié)省查閱手冊的時間,提高設(shè)計效率。
5.3 ADS應(yīng)用程序容易移植、修改、擴充,采用模塊化編程方法,便于將解決問題的多個模塊進行組合,具有一定的靈活性,且保密性好。
5.4 此法便于推廣,不斷探索、交流、積累便可定制成給排CAD計算繪圖一體化實用菜單。
使用微信“掃一掃”功能添加“谷騰環(huán)保網(wǎng)”