梁騰偉
(拜耳技術工程(上海)有限公司,上海 201507)
在工程設計過程中,儀表位置圖的繪制一直是一項極其費時費力而又必不可少的工作。有了三維建模軟件PDS后,傳統的儀表位置圖繪制方法有3種:第一種是設計人員直接看PDS的3D模型,結合二維設備布置圖繪制儀表位置圖;第二種是從PDS中切出帶儀表點位的設備圖;第三種是借助AutoCAD的第一代二次開發語言AutoLISP,在設備布置圖上打點,再手動修改儀表圖標,添加相關儀表信息。第一種方法純手動,而且所繪儀表位置不夠精確;第二種方法位置準確,但直接從PDS切出的二維圖紙帶有很多噪聲信息,整理非常費時費力;雖然第三種方法較前兩種稍微先進一點,但后續仍需做大量的手動工作。
為此,筆者提出一種基于AutoCAD VBA[1]的儀表位置圖設計方法,將AutoCAD與PDS三維建模軟件進行無縫鏈接,實現儀表位置圖的自動繪制。
儀表位置圖的繪制工作是一項較為機械的重復工作。原理上,任何機械重復工作都可由電腦或機器完成。此時人的任務是理解機器語言(程序語法),“教給”機器實現方法(算法實現),并最終檢查確認機器實現的結果,因此進行程序自動繪制儀表位置圖是可行的。
在程序工具的選擇上,典型的AutoCAD二次開發工具有AutoLISP和AutoCAD VBA。AutoLISP是Autodesk公司早期開發的一種二次開發語言;AutoCAD從R14版以后,提供了VBA語言接口,它是Excel與AutoCAD的“遙控器”[2],功能更加強大。因此,筆者選用AutoCAD VBA工具進行設計。
欲實現AutoCAD VBA自動繪制儀表位置圖,關鍵確認兩個問題:一是VBA可否在AutoCAD模型空間中定位?二是AutoCAD VBA如何獲取Excel數據?筆者經過研習AutoCAD的VBA幫助模塊,結合AutoCAD與Excel VBA的使用經驗,成功打通這兩條脈絡,確認了該方法的基礎可行性。另外,每一類儀表應當用不同的符號表示,以提高圖紙的可讀性與美觀性,這一點也可以通過VBA實現自動繪制。
利用AutoCAD VBA自動繪制儀表位置圖的主要流程如圖1所示。

圖1 新方法的工作流程
部分儀表的相關信息可以從PDS模型中提取并導出Excel文件,這部分工作需要配管專業與儀表專業密切合作。許多PDS建模工程師不太了解儀表專業,根據P&ID圖輸入儀表建模信息時,儀表位號參差不齊。這就需要前期儀表工程師與PDS建模工程師進行良好的溝通,明確定義PDS中儀表位號的命名方法。如:P&ID中有如圖2所示的流量變送器,建議在PDS建模時直接命名為F4001,而不要命名為FICA4001,字母與數字間也不能有空格。因為儀表的功能號FICA可能根據需要而經常改動,但儀表大類F輕易不會改動,除非根據工藝需要刪減儀表。而且從PDS角度講,用F4001足以標識該儀表,既方便后期儀表專業的比對又減少了配管專業的工作量。

圖2 P&ID圖中的流量變送器
另外,一個優秀的PDS模型,應當包含儀表類型的描述。這部分工作是在PDS模型中建好各個儀表點后,由儀表工程師提供相應儀表的類型信息給配管專業,PDS工程師可直接導入PDS模型。有了這一步工作,就可以大幅提高PDS導出儀表數據的可讀性。需要PDS導出的信息包括:儀表位號、儀表位置三維坐標(標高和縱橫坐標)、儀表所在管線號或設備號。
首先要對直接從PDS導出的表格進行整理,刪除不相關的信息,修整儀表位號(如除去空格等),使其與儀表索引表的命名完全對應。從SPI(Smart Plant Instrumentation,舊稱Intools)中導出儀表索引,并把儀表索引與PDS導出的儀表信息進行對比。結合P&ID圖,如果PDS有而儀表索引和P&ID無,說明PDS有誤,需刪除;如果PDS無而儀表索引和P&ID有,說明PDS有遺漏,需添加。匯總PDS不匹配信息后,通知配管專業刪除、修正或新增。
掃清PDS中儀表位號存在的問題后,通過Excel自帶的查詢功能把儀表位號、儀表類型、三維坐標及管線號等信息整合為一張表,結合設備圖紙中的儀表圖例,整理為最終數據源,見表1。

表1 整理后的儀表數據源(包括閥門)
首先,配置坐標原點。為了保證打點的精確性,需使設備圖紙的坐標原點與PDS模型的坐標原點完全一致。如此可省去在VBA程序中調整坐標相對值的工作,使VBA程序可以直接根據PDS導出的坐標定位打點。典型的配置方法是在設備布置圖中選取一個基準點,在PDS中查出該點的坐標,在AutoCAD中將設備布置圖移到相應的坐標。
然后,制作儀表圖例。根據項目的實際情況,在設備布置圖中繪制每類儀表類型的圖例,并制成AutoCAD圖塊,示例見表2。需要注意的是:圖塊名要與表1所列的最終數據源的圖塊名一致,否則VBA程序無法調用正確的圖例;同時需注意儀表圖塊所在的圖層,建議為儀表位置圖新建一個圖層,方便后期的修改與維護。制作各類儀表圖塊的目的是方便VBA程序找到相應位置后,直接調用該儀表類型的塊名,標識該儀表所在位置,免去后期人工添加儀表塊的繁瑣工作。

表2 儀表圖例和塊名舉例
通過VBAMAN打開AutoCAD VBA編輯器,載入預先編寫好的.dvb程序文件。執行程序,通常1min內即可生成儀表位置圖,繪制流程如圖3所示。

圖3 儀表位置圖繪制流程
注意:AutoCAD2013默認不帶VBA模塊。若要編寫AutoCAD VBA程序,需到其官方網站下載一個安裝包。
此方法在張家港某外資項目中應用后,極大地提高了設計人員的工作效率。施工中,由于儀表布置圖涵蓋了標高、管線號和接線箱號,詳盡的信對為施工單位執行儀表安裝工作起到一定的指導意義。準備的Excel版的最終數據源,也為施工階段提供了很大便利,施工管理人員可以很方便地檢索出某一區域的相關儀表信息。業主反饋:所繪圖紙儀表信息精確、詳盡而又美觀。
利用AutoCAD VBA實現儀表位置圖的自動生成,大幅提升了項目的設計效率和準確度,也提高了圖紙的準確性和可讀性,最大程度地節約了人工成本,并增強了設計人員的工作積極性。該方法特別適用于同一樓層區域儀表數量眾多的情況,同一樓層儀表數量越多,越能體現該方法的優越性。
該方法的不足之處在于AutoCAD VBA數據流的單向性問題。AutoCAD VBA只能把Excel中讀取的數據寫入AutoCAD圖紙,寫入之后無法用AutoCAD VBA讀出相應儀表的信息,也即對于每張儀表位置圖該程序只能運行一次,很難通過程序刪除來更新儀表相關信息。當然,一般而言數據源正確率較高,項目后期變更較少,儀表位置圖的更新工作量較小,可以手動進行。而且,用程序制圖效率非常高,一般不到一分鐘就能繪制一張儀表位置圖。如果后期更新量較大,可以直接刪除儀表布置層,更新數據源,再調用程序進行重新繪制。而且該方法有待開發簡易的人機接口,使沒有VBA程序概念的人也能很快學會使用該方法,以便推廣應用,使同行都能受益。