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