章泳健,姜 川,胡朝斌,沈建強,張 坤
(常熟理工學(xué)院,常熟 215500)
實現(xiàn)Solidworks自動布管的專用P&ID軟件設(shè)計
章泳健,姜 川,胡朝斌,沈建強,張 坤
(常熟理工學(xué)院,常熟 215500)
隨著Solidworks布管功能在三維管道設(shè)計中的廣泛應(yīng)用,針對其自動布管功能缺乏布管信息數(shù)據(jù)源XML文件的問題,利用VB和AutoLisp開發(fā)了運行于AutoCAD圖形環(huán)境的專用P&ID軟件。用戶可以在此軟件下快速繪制P&ID圖,并將布管信息輸出為Solidworks自動布管所需的XML文件,實現(xiàn)了二維P&ID圖與Solidworks自動布管功能的集成應(yīng)用。
Solidworks;自動布管;P&ID;XML;AutoCAD;二次開發(fā)
對于基于生產(chǎn)過程管理的石化行業(yè)而言,高效的管道設(shè)計及相關(guān)設(shè)備的信息表達與管理是十分重要的?;诙S布管技術(shù)來設(shè)計錯綜復(fù)雜的空間管道并進行正確表達是一項很困難的工作,其生成的二維圖紙也很難被理解。隨著三維數(shù)字化技術(shù)的發(fā)展,基于三維信息建模與管理技術(shù)的三維布管技術(shù)由于其可視化的效果與高效的信息表達能力,正逐步取代傳統(tǒng)的二維布管技術(shù)[1,2]。目前石化行業(yè)中的先進企業(yè)正逐步使用三維管道設(shè)計軟件進行企業(yè)信息建模與三維布管設(shè)計。三維管道設(shè)計軟件可分為兩類,其中專業(yè)三維管道設(shè)計軟件專業(yè)性強、功能齊全,但上手比較困難,一般需要專業(yè)培訓(xùn),且價格非常昂貴,很難在中小化工企業(yè)得到推廣。而通用的三維設(shè)計軟件中很多也集成了管道設(shè)計功能,如在工程界被廣泛采用的Solidworks軟件就具有管道設(shè)計模塊,其設(shè)備建模能力要強于專業(yè)管道設(shè)計軟件。所以此類軟件在數(shù)字化建模的綜合能力及軟件的易用性和使用成本上具有獨特的優(yōu)勢[3,4]。
用Solidworks的交互式布管功能需要在理解P&ID圖中的設(shè)備與布管信息后,交互式地根據(jù)P&ID圖逐段對管道進行建模,當(dāng)布管信息很復(fù)雜時不僅效率低而且容易出錯。而自動布管功能則可以通過導(dǎo)入布管信息后在布管向?qū)У囊龑?dǎo)下進行布管,不僅可以大大提高布管效率,也能保證布管的完整性與正確性。該功能通過在布管前導(dǎo)入包含P&ID信息的XML文件來實現(xiàn)的,但Solidworks并沒有提供由P&ID圖生成XML文件的工具,且XML文件的復(fù)雜性決定了不太可能手工去定義此文件,因此Solidworks的自動布管功能是不完整的,單獨使用不具備實用價值[5]。針對此問題,本文提出利用VB和AutoLisp開發(fā)一款基于AutoCAD的專用P&ID軟件的構(gòu)想。使用該軟件,用戶不僅可以通過一些專用命令來快速生成P&ID圖,而且能輸出Solidworks中自動布管所需要的XML文件。
本軟件的核心功能是快速定義P&ID圖,并將P&ID圖中的相關(guān)信息經(jīng)由XML文件輸出。P&ID圖中不僅要提供設(shè)備、管件和管線等圖元的幾何信息,而且需要包含圖元的屬性信息,以表達圖元所對應(yīng)的三維模型以及它們之間的連接關(guān)系。軟件設(shè)計了繪圖、屬性設(shè)置及XML輸出等功能模塊。其中,繪圖模塊能快速調(diào)用預(yù)定義的P&ID圖元庫來生成圖形,屬性設(shè)置模塊可通過對話框?qū)γ總€P&ID圖元賦予屬性信息,而XML輸出模塊可以從P&ID圖中提取各圖元及圖元的屬性信息,并按照規(guī)定的語法格式輸出所需的XML文件。為了便于人機交互,軟件還設(shè)計了菜單模塊,其總體結(jié)構(gòu)如圖1所示。
圖1 軟件總體結(jié)構(gòu)框圖
2.1.1 設(shè)備和管件的繪制
化工設(shè)備和管件的符號在化工部HG20519.*—92標(biāo)準(zhǔn)中均有標(biāo)準(zhǔn)的圖例[6]。本模塊將這些符號制作成塊并保存到圖元庫中,用戶在繪制P&ID圖時可以直接通過專用的命令來調(diào)用并插入這些塊。為方便用戶選擇所需的圖塊,本模塊用VB編寫了設(shè)備和管件選擇對話框。其中設(shè)備對話框如圖2所示,提供了設(shè)備選擇與圖形預(yù)覽功能,并能對插入的圖塊進行比例縮放及旋轉(zhuǎn)角度的設(shè)置。對管件選擇的對話框采用類似的界面進行操作。同時,本模塊中的圖庫具有一定的可擴充性,用戶可以根據(jù)企業(yè)的實際需要增加一些特殊的設(shè)備與管件圖元,只需將圖塊文件及對應(yīng)的位圖文件保存到本軟件的指定路徑即可。
2.1.2 管線的繪制
P&ID圖中的管線可用標(biāo)準(zhǔn)的多段線命令繪制,但由于要求必須按水平或豎直方向布置,所以本模塊用AutoLisp程序自定義了繪制管線命令[7]。在該程序中,先將繪圖環(huán)境設(shè)置為正交模式,并設(shè)置合適的對象捕捉,然后再調(diào)用多段線繪制管線,程序結(jié)束后再恢復(fù)原來的繪圖環(huán)境設(shè)置。
圖2 設(shè)備選擇對話框
圖3 P&ID圖元屬性設(shè)置算法流程圖
對P&ID圖元添加合理的屬性信息是生成正確的XML文件的關(guān)鍵。本模塊的目的是為了使每個P&ID圖元都具有屬性信息,以反映各個圖元所對應(yīng)的三維模型以及它們之間的連接關(guān)系。AutoCAD中只有圖塊可通過定義塊屬性來實現(xiàn)圖元與屬性的關(guān)聯(lián),P&ID圖中的設(shè)備與管件均是用圖塊定義的,通過定義塊屬性很容易添加屬性信息。但管線是通過多段線繪制,無法直接對其定義屬性。這里采用對管線進行屬性設(shè)置前先將其轉(zhuǎn)換為圖塊的方法來解決。當(dāng)然,也可以統(tǒng)一將圖元的屬性信息通過鏈接外部數(shù)據(jù)庫的方法來保存,但從程序?qū)崿F(xiàn)的難度和效率來看,通過塊屬性來實現(xiàn)更高效。
XML(可擴展標(biāo)記語言)是一種源于HTML語言的用于各種信息交換的通用工具[8]。P&ID圖元的屬性必須嚴(yán)格按照Solidworks對XML文件語法規(guī)定確定,這樣最終輸出的XML文件才能被Solidworks識別。以設(shè)備屬性為例,X M L文件規(guī)定的設(shè)備屬性主要有<ID>、<Tag>、<Description>、<PartNumber>、<Config>,即ID號、標(biāo)簽、描述、零件號、配置,因此為了保證最終輸出的XML文件正確性,我們設(shè)置的屬性必須來源于這幾個屬性。其中,標(biāo)簽相當(dāng)于設(shè)備的位號,是不同設(shè)備之間相互區(qū)別的標(biāo)志;零件號即設(shè)備模型的存放路徑,它是P&ID圖元與三維實體模型建立聯(lián)系的橋梁。配置主要用于區(qū)分同一設(shè)備模型的不同設(shè)置。這三項屬性是Solidworks中直接用于布管的關(guān)鍵信息,必須由用戶輸入。但ID號及描述這兩種屬性在布管應(yīng)用中并沒有直接用到,可以通過程序施以默認(rèn)值,以簡化用戶的輸入。本模塊中實現(xiàn)P&ID圖元屬性設(shè)置算法的流程圖如圖3所示。程序執(zhí)行過程中設(shè)計的設(shè)備屬性設(shè)置對話框如圖4所示。各項屬性可在輸入框中直接填寫,其中零件號也可通過雙擊后通過文件選擇對話框選擇相應(yīng)文件來完成屬性的設(shè)置。
圖4 設(shè)備屬性對話框
圖5 遍歷查詢算法流程圖
XML文件輸出模塊就是要通過一定的算法從P&ID圖中提取出各圖元對應(yīng)的屬性信息,并按照solidworks規(guī)定的語法格式輸出XML格式文件。選擇該模塊功能后,程序會先進行圖元屬性的完整性檢查。如果發(fā)現(xiàn)有圖元的屬性沒有設(shè)置,會跳出警告對話框,提示“有部分P&ID圖元屬性未設(shè)置,請設(shè)置!”,并且將對應(yīng)的圖元高亮顯示,以提醒用戶。如果圖元屬性設(shè)置完了,就會跳出XML文件保存對話框,選擇保存路徑及輸入文件名稱后確認(rèn),程序就會按照如圖5所示的遍歷查詢算法遍歷整個P&ID圖元,獲取它們的屬性參數(shù),并按要求輸出XML文件。
為提高上述各模塊的用戶友好性,就需要開發(fā)AutoCAD菜單欄,將對應(yīng)開發(fā)的命令通過菜單的形式進行顯示。菜單欄的開發(fā)方法主要有:通過編寫菜單文件來重新定制菜單、通過CUI組件定制菜單、通過VB等高級語言對AutoCAD進行二次開發(fā)來定制菜單[9]。
通過VB對AutoCAD進行二次開發(fā)來定制的菜單欄,是通過編程調(diào)用AutoCAD提供的有關(guān)菜單欄定制的API函數(shù)來實現(xiàn)的[10],編譯后可生成可直接執(zhí)行的VB應(yīng)用程序。運行應(yīng)用程序后會自動打開AutoCAD軟件并且會自動加載軟件菜單欄。關(guān)閉AutoCAD后,軟件菜單欄也會隨之卸載。本名為“專用P&ID軟件”的菜單欄設(shè)計就采用此方法,運行后自動在AutoCAD中添加一菜單欄,其下有繪圖、屬性設(shè)置以及XML輸出三個菜單項,而繪圖菜單項下又有三個子菜單,分別為設(shè)備、管件以及管線,如圖6所示。
軟件按既定設(shè)想開發(fā)完成后,需要通過測試來發(fā)現(xiàn)程序設(shè)計中可能存在的問題,并提供軟件的可靠性。測試對象的設(shè)計對測試的效率和效果至關(guān)重要,本測試設(shè)計了設(shè)備包括容器、反應(yīng)釜和泵及包括閥門和三通等管件的典型工藝流程,其P&ID圖如圖7所示。
測試過程如下:首先,完成與P&ID圖元對應(yīng)的容器、反應(yīng)釜和泵等設(shè)備及包括閥門和三通等管件的三維模型準(zhǔn)備,并放置在某文件目錄中。使用本軟件繪制P&ID圖,然后對每個P&ID圖元進行正確的屬性設(shè)置,在完成屬性完整性檢查后輸出XML文件(部分內(nèi)容如圖8所示)。最后,在Solidworks軟件中建立一裝配文件,在完成上述設(shè)備的布局設(shè)計后,就能在導(dǎo)入的XML文件引導(dǎo)下一步步完成設(shè)備的自動布管了,如圖9所示。
圖6 菜單欄
圖7 用于測試的典型工藝P&ID圖
圖8 由P&ID圖導(dǎo)出的XML文件部分內(nèi)容
圖9 Solidworks自動布管過程
通過以上軟件測試,最終驗證并通過了軟件設(shè)計的各方面要求。在與某化工企業(yè)合作的罐區(qū)數(shù)字化建模與布管項目中,應(yīng)用本軟件有效地解決了罐區(qū)管路連接復(fù)雜、手動布管費時費力的問題,順利并高效地完成了如圖10所示的罐區(qū)管道建模工作。
圖10 某化工工段罐區(qū)管道模型
通過基于AutoCAD專用P&ID軟件的開發(fā),結(jié)合Solidworks原先并不完善的自動布管功能,形成了從二維P&ID流程圖的繪制到三維設(shè)備建模、布局及自動布管的石化企業(yè)數(shù)字化應(yīng)用的解決方案。使用本軟件,用戶無需購買昂貴的專業(yè)布管軟件,也不必學(xué)習(xí)專業(yè)軟件的復(fù)雜操作,就能在易學(xué)易用的Solidworks環(huán)境下進行設(shè)備的自動布管,非常適合中小型石化企業(yè)的應(yīng)用需求。
[1] 劉家倉.三維管道設(shè)計系統(tǒng)的研究與開發(fā)[D].大連理工大學(xué),2006.
[2] 楊茂,江森清.工廠設(shè)計軟件在管道設(shè)計中的開發(fā)應(yīng)用[J].天然氣工業(yè),1996,03:61-63+14-15.
[3] 安銳明. SolidWorks在管道設(shè)計中的應(yīng)用[J]. CAD/CAM與制造業(yè)信息化,2007,01:52-54.
[4] 孫堯.基于SolidWorks的化工廠三維設(shè)計系統(tǒng)開發(fā)[D].東北大學(xué),2012.
[5] DS Solidworks公司.Solidworks管道與布線教程(2014版)[M].北京:機械工業(yè)出版社,2014.
[6] 路平.化工工藝流程圖C A D開發(fā)研究[J].國外油田工程,2003,09:41-45.
[7] 李學(xué)志,方戈亮,孫力紅.Visual LISP 程序設(shè)計(AutoCAD 2006)[M].北京:清華大學(xué)出版社,2006.
[8] 李憲文.基于XML的三維CAD模型數(shù)據(jù)交換[D].青島大學(xué),2005.
[9] 單玉霞,王美歐.基于AutoCAD的管道儀表流程圖符號庫的開發(fā)[J].石油化工自動化,2010,01:54-56.
Design of special P&ID software to realize solidworks automatic pipe layout
ZHANG Yong-jian, JIANG Chuan, HU Chao-bin, SHEN Jian-qiang, ZHANG Kun
TG75
:A
:1009-0134(2017)08-0133-04
2017-04-17
章泳?。?971 -),男,江蘇常熟人,副教授,工學(xué)碩士,主要從事數(shù)字化設(shè)計與仿真研究。