■ 中冶南方工程技術(shù)有限公司 彭起 張燎原
當(dāng)前,大多數(shù)工程設(shè)計(jì)公司進(jìn)行數(shù)字化轉(zhuǎn)型的重中之重是要盡可能增加BIM軟件使用率,不斷提高BIM軟件的應(yīng)用水平,從而達(dá)到普及正向設(shè)計(jì)的目的。這就需要通過切合業(yè)務(wù)實(shí)際需求的二次開發(fā),迅速解決設(shè)計(jì)人員在使用BIM軟件設(shè)計(jì)過程中的痛點(diǎn),提升效率。
目前,各種BIM軟件都有各自的支吊架模型庫,但在某些方面,如管道支吊架的輔助設(shè)計(jì)等涉及較少[1]。由于支吊架在實(shí)際工程設(shè)計(jì)中樣式繁多,各公司都有自己特色的支吊架樣式習(xí)慣,在進(jìn)行BIM設(shè)計(jì)過程中還需要設(shè)計(jì)人員自行補(bǔ)充設(shè)計(jì)支架設(shè)計(jì)。此外,部分BIM軟件無法生成支吊架施工詳圖,在一定程度上降低了設(shè)計(jì)效率。本文研究了一種利用C#語言進(jìn)行BIM軟件參數(shù)化支吊架建模二次開發(fā)的方法,詳細(xì)描述了二次開發(fā)的產(chǎn)品設(shè)計(jì)思路、需求內(nèi)容、編程思路及具體方法等,以期為基于BIM軟件進(jìn)行標(biāo)準(zhǔn)化、系列化支吊架的二次開發(fā)提供借鑒。
建模需求分析
利用二次開發(fā)進(jìn)行參數(shù)化建模,支架符合《管道支吊架第1部分:技術(shù)規(guī)范》(GB/T 17116.1-1997),二維圖如圖1所示。

圖1 支架二維圖
對支架模型建模的需求主要包括以下幾個(gè)方面:一是支吊架模型必須與軟件自帶模型的類別屬性一致,可以從軟件支吊架庫中直接調(diào)用;二是支架吊架插入模型后,可以自動(dòng)捕捉到管道中心線,且沿軸向垂直布置;三是支架模型中,立柱、加強(qiáng)筋等使用到的型鋼型號可以從下拉菜單中進(jìn)行選擇;四是立柱高度、立柱間距(寬度)、底板長度等參數(shù)由設(shè)計(jì)人輸入,根據(jù)輸入?yún)?shù)生成相應(yīng)的模型;五是管托可自適應(yīng)管道外徑;六是根據(jù)支架立柱高度的不同,自動(dòng)設(shè)置加強(qiáng)筋的數(shù)量。
模型出圖需求分析
利用二次開發(fā)實(shí)現(xiàn)支架模型的自動(dòng)出詳圖。詳圖要求符合相關(guān)設(shè)計(jì)標(biāo)準(zhǔn),使用設(shè)計(jì)人提供的圖框模版,標(biāo)注齊全,尺寸參數(shù)與模型一致,自動(dòng)統(tǒng)計(jì)并生成材料表及文字說明。
支吊架參數(shù)化建模方案
為了滿足某項(xiàng)目的實(shí)際需求,本文選擇基于Plant3D進(jìn)行二次開發(fā)。Plant3D是歐特克公司基于AutoCAD開發(fā)的工廠三維系統(tǒng)設(shè)計(jì)軟件,該模型以DWG文件格式進(jìn)行存儲,能與AutoCAD實(shí)現(xiàn)無縫對接,可以兼容所有CAD命令,并且可以隨時(shí)切換到CAD工作空間進(jìn)行操作。
Plant3D軟件本身提供了兩種方式進(jìn)行自定義支吊架建模:第一種方式是基于AutoCAD DWG塊的方式,這種方式無法做到參數(shù)化驅(qū)動(dòng)支吊架外形尺寸,對于同一種類型的支吊架,每一種不同尺寸的外形都需要繪制相應(yīng)尺寸的DWG塊,無法滿足參數(shù)化建模的需求。
第二種方式是Plant3D支持通過編寫Python腳本的方式創(chuàng)建參數(shù)化的支吊架模型,腳本通過調(diào)用特定組件的尺寸作為輸入,并創(chuàng)建出對應(yīng)形狀的實(shí)體塊作為輸出。軟件本身提供了大量不同的基礎(chǔ)組件的腳本,可以涵蓋管道、彎頭、法蘭、三通、噴嘴、不同類型的閥門等工廠設(shè)計(jì)中幾乎所有常用的類型。利用這些基礎(chǔ)組件的腳本,可以根據(jù)自身功能的需求定制開發(fā)不同的、可以滿足在實(shí)際項(xiàng)目中更多細(xì)節(jié)上需求的腳本。通過這種方式自定義支吊架,不僅可以使用參數(shù)驅(qū)動(dòng)改變支吊架模型的外形尺寸,還可以定義拉伸點(diǎn),使用拉伸的方式改變支吊架模型的外形。更重要的是,通過不斷更新完善自定義支吊架的腳本,可以積累形成數(shù)字資產(chǎn)。
出圖方案
在Plant3D軟件中創(chuàng)建的支吊架模型,無論是軟件自帶的支吊架還是自定義的支吊架,在模型中的輸出都是實(shí)體塊,并不包含每個(gè)構(gòu)件的基本信息,如型鋼、鋼板、螺栓等類型屬性信息,更不存在材質(zhì)、重量等屬性信息,無法直接被詳圖引用作為材料表信息。因此,直接由模型生成二維詳圖并自動(dòng)標(biāo)注的方式比較困難。
基于Python創(chuàng)建的參數(shù)化的支吊架模型,可以通過Plant3D提供的API獲取尺寸參數(shù),再通過二次開發(fā)的方式來定義并添加構(gòu)件信息,并將構(gòu)件信息寫入支吊架模型的對象擴(kuò)展詞典中。考慮到支吊架構(gòu)件的數(shù)量、長度和規(guī)格都可能隨著支吊架的尺寸發(fā)生改變,需要一種動(dòng)態(tài)的、可配置的方法來生成支吊架詳圖。
基于上述考慮,本文提出了一種使用詳圖模版文件與模型可變參數(shù)相鏈接的方法生成支吊架詳圖及材料表的方案:使用Python開發(fā)支吊架參數(shù)化建模腳本,首先確定支吊架尺寸參數(shù)約束,然后利用Plant3D提供的基礎(chǔ)組件腳本,通過布爾運(yùn)算組合定制需要的支吊架外形;使用C#開發(fā)支吊架出圖插件,插件的主要功能包括:自定義支吊架的構(gòu)件信息、根據(jù)支吊架尺寸參數(shù)自定義參數(shù)、自定義模版文件鏈接以及自動(dòng)計(jì)算并生成材料表。
產(chǎn)品工藝專業(yè)應(yīng)盡可能地明確開發(fā)要求,此次開發(fā)提資包括以下4部分內(nèi)容:
一是要求支架可以由設(shè)計(jì)人輸入的參數(shù)自動(dòng)建模,在模型中右鍵點(diǎn)擊支架,要求出現(xiàn)支架詳圖生成選項(xiàng),并可自動(dòng)生成支架詳圖,輸入?yún)?shù)及詳圖模版如圖2所示;

圖2 支架可輸入?yún)?shù)及詳圖模版
二是支架能夠自動(dòng)捕捉管道中心線并按照與坐標(biāo)軸一致的方向(正交)插入;
三是支架的型鋼內(nèi)置10、12.6、14a、16a、18a、20a幾種槽鋼供選擇;
四是支架材料表格式和位置與模版一致,其中,材料表中的一些參數(shù)同樣要求與自定義參數(shù)相鏈接(同上面一條),具體需要鏈接參數(shù)見表1中標(biāo)單下劃線部分,需自動(dòng)計(jì)算的參數(shù)見“{}”內(nèi)部分。

表1 支架材料表及參數(shù)鏈接內(nèi)容
參數(shù)化支吊架開發(fā)流程
參數(shù)化支吊架的開發(fā)流程如圖3所示。在等級庫的共享空間中新建CustomScript文件夾;在CustomScript文件夾下創(chuàng)建Python 腳本文件;在腳本中聲明元數(shù)據(jù)信息,元數(shù)據(jù)包括腳本的提示信息、腳本參數(shù)的提示信息、腳本和其參數(shù)的組信息;.為自定義腳本創(chuàng)建主要函數(shù),注意主函數(shù)的名稱必須與文件名一致;打開Plant3D,在命令窗口使用PLANTREGISTERCUSTOMSCRIPTS命令注冊這個(gè)新腳本。

圖3 參數(shù)化支吊架開發(fā)流程
腳本注冊成功后,會生成保存腳本信息和元數(shù)據(jù)信息的文件,在Support元件庫中可以看到自定義的支吊架腳本已經(jīng)添加成功。元件庫創(chuàng)建后,在模型中插入自定義的支吊架,如圖4所示,支吊架能自動(dòng)捕捉到管道中心線,且沿軸向正交布置,在支吊架特性中可以查看尺寸參數(shù),通過改變參數(shù)修改支吊架外形尺寸。

圖4 參數(shù)化支吊架
自動(dòng)出圖插件開發(fā)流程與功能
由于Plant3D軟件中創(chuàng)建的支吊架模型都是實(shí)體塊,不包含支吊架構(gòu)件的信息,因此支吊架出圖插件首先要滿足能夠定義并添加構(gòu)件信息。構(gòu)件的部分信息是可變的,如槽鋼規(guī)格、鋼板規(guī)格、加強(qiáng)筋數(shù)量、型鋼及鋼板單重等,插件必須能夠?qū)崿F(xiàn)這些信息的動(dòng)態(tài)變化,并能自動(dòng)重新生成施工詳圖和材料表。為此,我們提出了一種使用詳圖模版文件與模型可變參數(shù)相鏈接的方法,來實(shí)現(xiàn)自動(dòng)生成支吊架施工詳圖。
為了能夠滿足多種不同形式的支吊架自動(dòng)生成詳圖和材料表,將同一種類型的支吊架構(gòu)件的相同信息提取出來,保存在SQLite數(shù)據(jù)庫中。同時(shí),支持通過支吊架的尺寸參數(shù)組合成自定義參數(shù),這些參數(shù)用來表示構(gòu)件中可變的信息,實(shí)現(xiàn)動(dòng)態(tài)變化。自定義的參數(shù)列表同樣保存在SQLite數(shù)據(jù)庫中,配置一次后不需要經(jīng)常修改,設(shè)計(jì)人員可以直接使用。支吊架自動(dòng)生成施工圖插件功能模塊劃分及實(shí)現(xiàn)方式如下:
自定義參數(shù)功能模塊。由于支吊架構(gòu)件的規(guī)格、長度以及數(shù)量通常需要根據(jù)支吊架的尺寸參數(shù)計(jì)算得出,不同類型的支吊架計(jì)算方式往往不同,為了能夠使用多種不同類型的支吊架,開發(fā)了自定義參數(shù)功能模塊。首先,通過Plant3D提供的API讀取支吊架的PartSizeProperties,其中包含了支吊架的尺寸參數(shù)。設(shè)計(jì)人員可以自定義參數(shù),將自定義的參數(shù)保存在SQLite數(shù)據(jù)庫中,在生成施工詳圖時(shí)會自動(dòng)計(jì)算這些自定義的參數(shù)。當(dāng)支吊架的參數(shù)發(fā)生修改時(shí),可以實(shí)現(xiàn)動(dòng)態(tài)變化。自定義參數(shù)功能模塊界面如圖5所示。

圖5 自定義參數(shù)功能
自定義構(gòu)建信息功能模塊。Plant3D中支吊架模型不包含支吊架構(gòu)件的信息,為了解決這一問題,在支吊架自動(dòng)出圖插件中提供了自定義構(gòu)件信息的功能。基于WinForm開發(fā)可視化的配置界面,同時(shí)集成了熱軋型鋼GB/T706—2016標(biāo)準(zhǔn),當(dāng)選擇構(gòu)件的類型后,可以自動(dòng)讀取數(shù)據(jù)庫中的熱軋型鋼標(biāo)準(zhǔn),包括外形參數(shù)、規(guī)格及單重等信息。配置完成后,所有構(gòu)件的信息將存儲在SQLite數(shù)據(jù)庫中,使用支吊架時(shí)自動(dòng)讀取默認(rèn)配置信息,對于可修改的構(gòu)件信息,如槽鋼的規(guī)格,設(shè)計(jì)人員在建模時(shí)根據(jù)實(shí)際情況來選擇。這些信息需要保存在模型中,Palnt3D完全支持AutoCAD的API接口,因此將可修改的構(gòu)件信息保存在模型的對象擴(kuò)展詞典(ExtensionDictionary)中。自定義構(gòu)件信息功能如圖6所示。

圖6 自定義構(gòu)件信息功能模塊
材料表自動(dòng)計(jì)算功能模塊。構(gòu)件信息自定義完成后,其中包含自定義的可變參數(shù),在生成材料表時(shí),需要先計(jì)算這些可變參數(shù):通過Plant3D的API讀取支吊架的尺寸參數(shù)值,使用當(dāng)前實(shí)際值替換表達(dá)式中的參數(shù),生成字符串公式,然后使用DataTable的Compute方法計(jì)算公式得到結(jié)果,最終計(jì)算出構(gòu)件的長度、數(shù)量、單重、總重等,并統(tǒng)計(jì)生成材料表。材料表參數(shù)計(jì)算功能如圖7所示。

圖7 材料表參數(shù)計(jì)算
自動(dòng)生成施工詳圖功能模塊。在詳圖模版中,將支吊架的尺寸標(biāo)準(zhǔn)以及材料表都定義成了帶屬性的塊,生成詳圖之前,首先通過Plant3D的API讀取當(dāng)前支吊架的尺寸參數(shù),計(jì)算并生成材料表,然后根據(jù)配置信息動(dòng)態(tài)鏈接至指定的DWG模版文件,通過AutoCAD的API(Plant3D完全兼容)將尺寸參數(shù)及材料表寫入對象的塊中,保存后即自動(dòng)生成了當(dāng)前支吊架的施工詳圖。當(dāng)支吊架的參數(shù)修改后,再次生成詳圖會自動(dòng)更新尺寸標(biāo)注及材料表。詳圖與模版圖完全一致。
大多數(shù)BIM軟件都不是針對某一個(gè)行業(yè)或某一個(gè)專業(yè)的,需要大量的二次開發(fā)才能使其更符合設(shè)計(jì)人員的設(shè)計(jì)習(xí)慣,提升設(shè)計(jì)效率。本文提出了一種使用詳圖模版文件與模型可變參數(shù)相鏈接的方法,生成支吊架詳圖及材料表。首先基于Python開發(fā)參數(shù)化支吊架腳本,將其作為公司的數(shù)字資產(chǎn),然后基于C#對Plant3D軟件進(jìn)行二次開發(fā),開發(fā)插件實(shí)現(xiàn)了自動(dòng)生成支吊架施工詳圖及材料表,能夠支持各種不同形式的支吊架,有一定的推廣應(yīng)用價(jià)值。在對BIM軟件進(jìn)行二次開發(fā)時(shí),要求產(chǎn)品工藝人員(設(shè)計(jì)人)必須將產(chǎn)品需求盡可能詳細(xì)地描述清楚,在此基礎(chǔ)上編程人員才能更好地掌握設(shè)計(jì)意圖。