侯曉燕,崔強(qiáng),魯先龍,張琰
(中國電力科學(xué)研究院,北京市,102401)
目前輸電線路桿塔基礎(chǔ)設(shè)計(jì)過程中,由于基礎(chǔ)類型眾多、數(shù)據(jù)復(fù)雜,工程圖不可避免地需要經(jīng)過多次反復(fù)修改,進(jìn)行形狀和尺寸的綜合協(xié)調(diào)、優(yōu)化,這樣就增加了設(shè)計(jì)人員工作反復(fù)性,降低了工作效率,而通過交互式界面上的人機(jī)對(duì)話,修正圖形參數(shù)的量值,即參數(shù)化繪圖則可以解決這一問題。參數(shù)化繪圖是指設(shè)計(jì)對(duì)象的結(jié)構(gòu)形式比較定性,可以用1組參數(shù)來約定尺寸關(guān)系,即將圖形的尺寸看成是某些變量的參數(shù)。
AutoCAD作為工程中最常用的繪圖設(shè)計(jì)軟件之一,得到設(shè)計(jì)人員的廣泛使用。Object ARX是面向?qū)ο蟮腃++開發(fā)工具,允許用戶利用Visual C++及其MFC類庫開發(fā)AutoCAD應(yīng)用程序(實(shí)為動(dòng)態(tài)鏈接庫DLL),擴(kuò)充AutoCAD的類和協(xié)議,創(chuàng)建新的AutoCAD命令。ARX應(yīng)用程序共享AutoCAD的地址空間,并可直接訪問圖形數(shù)據(jù)庫,使用AutoCAD的內(nèi)核結(jié)構(gòu)和數(shù)據(jù)。因而Object ARX比其他的二次開發(fā)技術(shù)運(yùn)行速度要快,功能更強(qiáng)[1-4]。
圖1顯示了實(shí)現(xiàn)繪圖的軟件架構(gòu)。涉及到的軟件有VB、AutoCAD、ObjectARX和VC。軟件系統(tǒng)中的計(jì)算模塊選用VB6.0作為開發(fā)語言,繪圖模塊選用VC和ObjectARX作為開發(fā)語言。VC和ObjectARX編譯生成ARX。計(jì)算模塊與繪圖模塊之間的傳值過程如下:首先,通過計(jì)算模塊得到基礎(chǔ)各尺寸參數(shù)值,通過VB中的Shell函數(shù),將各參數(shù)值傳遞給ARX,ARX讀取并記錄參數(shù);然后,通過VB命令激活A(yù)utoCAD窗口;最后,AutoCAD執(zhí)行ARX中的繪圖命令,自動(dòng)完成施工圖繪圖操作。整個(gè)過程中計(jì)算模塊與繪圖模塊通過Shell函數(shù)建立兩者之間的關(guān)聯(lián)。
圖1 軟件架構(gòu)Fig.1 Software configuration
繪圖功能實(shí)現(xiàn)過程中涉及到的主要文件有6種,這些文件在軟件運(yùn)行過程中起著傳遞參數(shù)、記錄信息等重要作用。
(1)acad.rx,記錄了AutoCAD打開時(shí)執(zhí)行的ARX文件,AutoCAD每次打開時(shí)都會(huì)讀取acad.rx文件,執(zhí)行繪圖命令。
(2)fpCAD.lnk,是打開AutoCAD的快捷方式,指定了起始位置和目標(biāo)可執(zhí)行文件,起始位置為當(dāng)前程序的安裝路徑,目標(biāo)可執(zhí)行文件為用戶指定的AutoCAD可執(zhí)行文件。使用快捷方式的優(yōu)點(diǎn)是,可以從當(dāng)前路徑下打開AutoCAD,這樣AutoCAD打開時(shí)就會(huì)讀取當(dāng)前路徑下的acad.rx文件和執(zhí)行ARX文件。所以快捷方式是繪圖模塊實(shí)現(xiàn)自動(dòng)打開AutoCAD,并且自動(dòng)繪圖的必不可少的文件。
(3)工程繪圖信息匯總.log,是工程目錄下的繪圖信息匯總文件。文件包括每個(gè)設(shè)計(jì)完成的桿塔名稱、基礎(chǔ)名稱和繪圖參數(shù)文件的絕對(duì)路徑。每個(gè)桿塔名稱都不相同,用戶不能隨便改變此文件格式和文件名稱。
(4)桿塔名稱.txt,是繪圖參數(shù)文件。里面包括繪制施工圖時(shí)需要的所有參數(shù)取值。對(duì)于不同的基礎(chǔ),繪圖參數(shù)文件格式不同。1個(gè)工程有多個(gè)繪圖參數(shù)文件,每個(gè)繪圖參數(shù)文件以桿塔名稱為文件名,用戶不能隨便改變此文件格式、文件名稱和文件路徑,因?yàn)槊總€(gè)繪圖參數(shù)文件在繪圖信息匯總文件中都有記錄。
(5)fpCAD.arx文件,是封裝了繪圖命令的ARX文件。
(6)data.ini文件,是AutoCAD與VB程序的接口文件,記錄了繪圖參數(shù)文件的保存路徑和基礎(chǔ)類型,ARX繪圖命令每次都會(huì)讀取data.ini文件獲得所需信息。
圖2顯示了軟件實(shí)現(xiàn)繪圖功能的基本流程。
軟件在安裝即將結(jié)束時(shí),會(huì)彈出“選擇AutoCAD路徑和版本”對(duì)話框。用戶選擇AutoCAD路徑和版本,點(diǎn)擊了“確定”之后,軟件會(huì)重寫acad.rx文件和生成fpCAD.lnk文件。用戶進(jìn)行完AutoCAD路徑和版本設(shè)置之后,安裝過程結(jié)束。
圖2 基本流程圖Fig.2 Basic flow chart
用戶在進(jìn)行基礎(chǔ)優(yōu)化設(shè)計(jì)時(shí),點(diǎn)擊生成“施工圖”按鈕后,軟件會(huì)讓用戶選擇點(diǎn)擊“生成參數(shù)文件”按鈕或“生成施工圖”按鈕。若用戶點(diǎn)擊“生成參數(shù)文件”按鈕,程序會(huì)生成繪圖參數(shù)文件,保存在當(dāng)前工程路徑下面,并且會(huì)更新此工程中的繪圖信息匯總文件;若用戶點(diǎn)擊“生成施工圖”按鈕,程序首先生成繪圖參數(shù)文件,然后將各參數(shù)值讀寫到各圖形文件中,并且在AutoCAD軟件上顯示出所繪制的施工圖。在這個(gè)過程中,軟件會(huì)生成data.ini文件。用VB程序打開AutoCAD軟件是通過調(diào)用shellExecute函數(shù)打開fpCAD.lnk來實(shí)現(xiàn)的。
打開AutoCAD之后,AutoCAD首先會(huì)讀取acad. rx,然后執(zhí)行acad.rx所記錄的封裝了繪圖命令A(yù)RX文件。ARX文件會(huì)首先讀取data.ini文件,獲得繪圖參數(shù)文件的路徑和基礎(chǔ)類型,然后找到并且讀取繪圖參數(shù)文件,并且依據(jù)不同的基礎(chǔ)選型做不同的操作,最后生成施工圖。
常用的繪圖方法包括2種:第1種是根據(jù)輸入的各參數(shù)值,直接繪制工程設(shè)計(jì)圖,即“命令”控制“畫筆”的繪圖方法;第2種是打開并根據(jù)所提供的參數(shù)修改預(yù)先設(shè)定的模板。其中第2種更適合繪制內(nèi)容比較復(fù)雜且格式相對(duì)固定的圖紙。本軟件開發(fā)過程中選用第2種繪圖方法。實(shí)踐證明該方法運(yùn)行效率高,可擴(kuò)展性好。
軟件允許用戶對(duì)施工圖中的設(shè)計(jì)單位、工程名稱、批準(zhǔn)人員、校核人員、審核人員、設(shè)計(jì)人員、出圖日期、比例、圖號(hào)等繪圖框架信息進(jìn)行自定義設(shè)置,滿足設(shè)計(jì)人員的需要。需要給用戶提供接口,輸入必要參數(shù);在繪圖模板上,將繪圖框架中的上述信息內(nèi)容處添加不同文字標(biāo)示,例如“工程名稱”等;將上述信息內(nèi)容寫入繪圖參數(shù)文件中;最后讀取參數(shù)文件,修改模板上的相應(yīng)文字標(biāo)示。
軟件有默認(rèn)的繪圖比例,并且可以根據(jù)提供的繪圖參數(shù),計(jì)算出最佳繪圖比例。然后將所有實(shí)體的尺寸根據(jù)比例進(jìn)行調(diào)整,這樣設(shè)計(jì)出來的施工圖尺寸是比較合適的。
對(duì)模板上的實(shí)體(包括線條和圓等)進(jìn)行尺寸修改、刪除是繪圖過程的重要工作。
首先,為了修改起來方便,在制作模板過程中,將所有線條都設(shè)定為多段線;其次,給需要修改的每個(gè)實(shí)體都增加擴(kuò)展數(shù)據(jù),作為每個(gè)實(shí)體的編號(hào);最后,通過讀取擴(kuò)展數(shù)據(jù)來進(jìn)行區(qū)分實(shí)體,進(jìn)而可以做不同的操作,包括修改實(shí)體的大小、位置,進(jìn)行刪除等。
在給每個(gè)實(shí)體追加擴(kuò)展數(shù)據(jù)時(shí),需要添加3個(gè)命令:AddXData、DelXData和ViewXData,分別為添加實(shí)體數(shù)據(jù)、刪除實(shí)體數(shù)據(jù)和查看實(shí)體數(shù)據(jù)。通過在AutoCAD加載并執(zhí)行上述3個(gè)命令,就可以輕松地實(shí)現(xiàn)為實(shí)體添加、刪除、查看擴(kuò)展數(shù)據(jù)。
在繪圖過程中,可以將零散的輪廓線條和尺寸標(biāo)注內(nèi)容封裝成塊,以塊的形式插入到所需的位置。這種方法適合繪制一些內(nèi)容固定但位置會(huì)根據(jù)所提供的繪圖參數(shù)發(fā)生變化的圖形,比如地面線由許多實(shí)體組成且實(shí)體位置和大小不發(fā)生變化,但是插入點(diǎn)會(huì)發(fā)生變化。插入與分解塊是繪圖常用方法,需要如下步驟:在繪圖模版中添加塊,給塊命名并設(shè)置插入點(diǎn),同時(shí)將塊的記錄添加到塊表中;在ARX程序中計(jì)算插入點(diǎn)的位置,插入塊;根據(jù)需要對(duì)塊進(jìn)行縮放、旋轉(zhuǎn)等;分解塊,這樣用戶可以對(duì)塊內(nèi)的每個(gè)實(shí)體根據(jù)需要進(jìn)行修改。
本軟件既可以實(shí)現(xiàn)單個(gè)基礎(chǔ)設(shè)計(jì)結(jié)束后即時(shí)出圖,又可以實(shí)現(xiàn)基礎(chǔ)優(yōu)化設(shè)計(jì)完成之后,選擇性地出圖。設(shè)計(jì)計(jì)算與參數(shù)化繪圖既關(guān)聯(lián)又獨(dú)立是本軟件的一大特色,也是符合設(shè)計(jì)人員操作的習(xí)慣。設(shè)計(jì)結(jié)果輸出中的繪圖功能實(shí)現(xiàn)流程如圖3所示。
圖3 設(shè)計(jì)結(jié)果輸出中的繪圖功能實(shí)現(xiàn)流程圖Fig.3 Flow diagram for drawing function in design results output
用戶打開工程文件之后,軟件會(huì)自動(dòng)將工程名稱、已經(jīng)設(shè)計(jì)好的桿塔名稱、基礎(chǔ)類型和繪圖參數(shù)文件路徑顯示給用戶。需要用戶選擇繪圖類型(單個(gè)基礎(chǔ)、拉壓基礎(chǔ)和多個(gè)基礎(chǔ))及其桿塔名稱進(jìn)行繪圖信息設(shè)置,然后點(diǎn)擊“確定”,系統(tǒng)會(huì)自動(dòng)將施工圖顯示在AutoCAD軟件中。單個(gè)基礎(chǔ),是1張?jiān)O(shè)計(jì)圖中輸出1個(gè)基礎(chǔ),拉壓基礎(chǔ)是1張?jiān)O(shè)計(jì)圖中輸出拉壓2個(gè)基礎(chǔ),多個(gè)基礎(chǔ)是1張?jiān)O(shè)計(jì)圖中輸出2~8個(gè)基礎(chǔ)的信息。這3種繪圖類型涵蓋各種地形條件、荷載條件下桿塔基礎(chǔ)的所有型式,符合實(shí)際施工需要。圖4顯示了以工程為單位進(jìn)行設(shè)計(jì)結(jié)果輸出界面。
圖4 設(shè)計(jì)結(jié)果輸出界面Fig.4 Output interface for design results
為了支持不同的AutoCAD版本,程序需要在多種環(huán)境下編譯。AutoCAD2002執(zhí)行的ARX需要在VC6.0和 ObjectARX2002環(huán) 境 編 譯 生 成 。 AutoCAD2004/2005/2006執(zhí)行的ARX需要在VC. Net 2002和ObjectARX2004/2005/2006環(huán)境編譯生成。AutoCAD2007/2008執(zhí)行的ARX需要在VC.Net 2005和ObjectARX2007/2008環(huán)境編譯生成。
軟件系統(tǒng)主要包括地基庫模塊、桿塔基礎(chǔ)選型模塊、桿塔基礎(chǔ)優(yōu)化設(shè)計(jì)模塊、參數(shù)化繪圖模塊四部分。其中參數(shù)化繪圖模塊是所有設(shè)計(jì)成果最終的表現(xiàn)。用戶通過地基庫、基礎(chǔ)選型、桿塔基礎(chǔ)優(yōu)化設(shè)計(jì)獲得基礎(chǔ)外形、內(nèi)部構(gòu)造、連接件等各種表征桿塔基礎(chǔ)基本特征的參數(shù)值。繪圖模塊通過接口函數(shù)對(duì)上述參數(shù)讀取、修改、組織,并最終形成完整的施工圖。參數(shù)化繪圖模塊實(shí)現(xiàn)如下繪圖功能:(1)在VB中可以直接打開AutoCAD生成所需的施工圖。(2)用戶在安裝軟件的過程中可以對(duì)AutoCAD的可執(zhí)行文件路徑和版本進(jìn)行自定義設(shè)置。(3)軟件會(huì)根據(jù)用戶選擇的AutoCAD的不同版本調(diào)用不同的ARX文件進(jìn)行施工圖的繪制,方便了用戶的使用。(4)可以選擇工程中已經(jīng)設(shè)計(jì)好的桿塔基礎(chǔ)和繪圖類型進(jìn)行選擇性地出圖。
以全掏挖基礎(chǔ)為例說明系統(tǒng)實(shí)現(xiàn)的過程。在“全掏挖基礎(chǔ)設(shè)計(jì)”主界面上進(jìn)行設(shè)計(jì)完成之后,點(diǎn)擊“施工圖”按鈕之后,會(huì)彈出“全掏挖基礎(chǔ)施工圖定制”對(duì)話框,如圖5所示。
圖5 全掏挖基礎(chǔ)施工圖訂制Fig.5 Custom drawing of digged foundation
點(diǎn)擊“生成參數(shù)文件”按鈕,系統(tǒng)會(huì)在后臺(tái)生成繪圖參數(shù)文件,保存在當(dāng)前工程路徑下,并及時(shí)更新工程的繪圖信息匯總文件;點(diǎn)擊“生成施工圖”按鈕,系統(tǒng)會(huì)生成并且調(diào)用繪圖參數(shù)文件,并進(jìn)入AutoCAD環(huán)境,自動(dòng)生成施工圖。圖6顯示了施工圖的一部分。
圖6 全掏挖基礎(chǔ)施工圖中的配筋圖Fig.6 Reinforcement drawing of digged foundation
繪圖模塊作為輸電線路桿塔基礎(chǔ)設(shè)計(jì)軟件的最終設(shè)計(jì)結(jié)果輸出模塊,實(shí)現(xiàn)了多種桿塔基礎(chǔ)的參數(shù)化和自動(dòng)化繪圖,實(shí)用且靈活,并且在下面幾個(gè)方面有所創(chuàng)新:(1)用戶可隨機(jī)定制AutoCAD2002—2008任一版本作為繪圖環(huán)境。(2)用戶可根據(jù)個(gè)人需求對(duì)繪圖內(nèi)容進(jìn)行定制。(3)設(shè)計(jì)計(jì)算和參數(shù)化繪圖既關(guān)聯(lián)又獨(dú)立,可對(duì)各種地形條件、荷載條件下的桿塔基礎(chǔ)進(jìn)行參數(shù)化繪圖,滿足電力工程建設(shè)需要。
[1]馬萬杰,夏國棟,姜坤,等.基于ObjectARX的AutoCAD塑料模標(biāo)準(zhǔn)件系統(tǒng)的研究與實(shí)現(xiàn)[J].模具技術(shù),2009(2):37-39.
[2]馮艷.輸電鐵塔獨(dú)立基礎(chǔ)優(yōu)化設(shè)計(jì)CAD[D].成都市:西南交通大學(xué),2004.
[3]王衛(wèi)東,詹振炎.ObjectARX技術(shù)在道路路基橫斷面圖形存儲(chǔ)中的應(yīng)用[J].計(jì)算機(jī)工程,2002,28(3):251-252.
[4]肖粲俊,鄭忠俊,俞海明,等.基于ObjectARX的塑料注塑模大型模架參數(shù)化設(shè)計(jì)[J].模具技術(shù),2006(4):56-57.