羅智平
(中國化學(xué)工程集團有限公司,北京 100007)
PDMS是目前國內(nèi)三維工程設(shè)計的主流軟件之一,在石油化工領(lǐng)域,其市場占有率達到70%,該軟件基于數(shù)據(jù)庫支持,在三維工廠模型設(shè)計完成后,可以直接提取工程數(shù)據(jù)并輸出各種設(shè)計報表和材料表。同時,PDMS也支持客戶化定制開發(fā),可以通過適當(dāng)?shù)亩涡薷?,實現(xiàn)自動化輸出各種設(shè)計成品報表。
本文根據(jù)實際工作中的開發(fā)案例,簡要介紹PDMS程序化輸出Excel格式報表文件的三種開發(fā)思路和方法。
PDMS軟件擁有面向?qū)ο蠛暾Z言PML的開發(fā)能力,隨著技術(shù)的不斷迭代更新,目前新版PDMS在支持自身的PML語言的基礎(chǔ)上,引入了微軟的.NET技術(shù),確保用戶可以使用.NET技術(shù)進行開發(fā)定制工作。
報表輸出是PDMS重要的功能之一,利用PDMS的開發(fā)能力,配合工程需要,進行一定的開發(fā),可以實現(xiàn)自動化輸出,能有效提高報表輸出的工作效率。本文將基于輸出材料表的開發(fā)演示來介紹如何利用PDMS的開發(fā)能力提高工作效率。
1)PML直接開發(fā)CSV格式輸出。
2)PML調(diào)用PDMS內(nèi)置Excel接口輸出。
3)PML調(diào)用第三方C#類庫輸出。
在開發(fā)CSV格式輸出時,直接使用PML語言編寫程序,收集工程對象的相關(guān)屬性并按要求完成整理,然后輸出成CSV格式的報表文件,可以用Excel格式的文件直接打開。程序處理的流程如圖1所示。
圖1 PML語言編寫程序處理流程示意
在PDMS中選定一個管道對象,運行上述代碼就可以生成CSV文件。
從PDMS 12.0版本開始,軟件增加了Grid control對象支持,該對象是PDMS官方的Excel接口,利用該接口,可以直接生成Excel文件,程序處理流程如圖2所示。
圖2 PML調(diào)用PDMS內(nèi)置Excel接口輸出程序處理流程示意
上述兩種方法是完全利用PDMS內(nèi)置功能支持完成Excel格式文件輸出開發(fā)工作,可以滿足初級的報表文件輸出需求。如果要生成符合標(biāo)準(zhǔn)體系要求的Excel報表成品文件,上述方法生成的文件還需要增加人工干預(yù)的格式修改工作。
PMLNET也是PDMS 12.0版本之后提供的新功能。通過支持微軟的.NET開發(fā)技術(shù),讓PDMS可以使用任意一種兼容.NET的開發(fā)語言,由此給PDMS帶來了非常靈活的定制開發(fā)能力。該方法可以程序化干預(yù)輸出報表的格式修訂,實現(xiàn)一次性輸出滿足標(biāo)準(zhǔn)體系要求的成品文件,可以直接用于打印。PMLNET的原理示意如圖3所示。
圖3 PMLNET原理示意
圖3中左側(cè)是PDMS,信息的收集和處理如前面兩種方法在PDMS內(nèi)部處理,右側(cè)是利用第三方的C#類庫開發(fā)出來的PMLNET類庫(類庫名為Exceladapter),供PDMS調(diào)用相關(guān)的函數(shù)即可。本文中Exceladapter調(diào)用的第三方的Excel類庫的名字是Aspose.cells,一個專門用于處理Excel文件讀寫的插件,可以實現(xiàn)技術(shù)人員需要的全部定制功能。
PDMS內(nèi)置的PML程序和PMLNET類庫之間可以通過表1中的5種類型變量進行雙向數(shù)據(jù)傳遞。
表1 PML程序和PMLNET類庫對照
在這里技術(shù)人員將編寫1個Exceladapter.dll中間件,這個中間件負責(zé)搭建PML程序和Aspose.cells.dll程序庫的溝通橋梁,程序處理流程如圖4所示。
圖4 利用Exceladapter中間件后的程序處理流程示意
使用該方法開發(fā)的Excel輸出程序可以實現(xiàn)對輸出文件全方位的定制。PDMS內(nèi)置的模式1無法將多個SHEET合并到1個Excel表內(nèi);內(nèi)置的模式2輸出的數(shù)字信息是以字符串格式保存,這樣會導(dǎo)致管件數(shù)量無法直接匯總。以上2種PDMS內(nèi)置的模式都無法進行Excel文件格式的定制,無法滿足作業(yè)指導(dǎo)書的要求。
PDMS程序化輸出Excel格式報表的3種方法的特點比較見表2所列。
表2 PDMS程序化輸出Excel格式
PDMS平臺規(guī)范的數(shù)據(jù)庫存儲和網(wǎng)絡(luò)并行工
作能力,大幅提高了設(shè)計過程中的工程信息的質(zhì)量和流轉(zhuǎn)效率。在應(yīng)用PDMS過程中,應(yīng)加大對設(shè)計數(shù)據(jù)的重視,并以適當(dāng)?shù)拈_發(fā)工作提高PDMS平臺的數(shù)據(jù)處理能力,自動化輸出各種報表文檔,以降低在完成三維模型設(shè)計后,生成最終成品電子文檔階段的人工時投入,對整個項目設(shè)計數(shù)據(jù)一致性和人工成本的控制有較大的幫助。
利用PMLNET混合開發(fā)模式,借助微軟的.NET開發(fā)平臺,使用現(xiàn)有的C#類庫助力PDMS開發(fā)工作,會產(chǎn)生良好的效果。該開發(fā)模式既可以利用現(xiàn)有的PML開發(fā)能力讀取和處理PDMS數(shù)據(jù)庫,又能利用C#類庫完成輸出定制和外部數(shù)據(jù)輸入讀取,形成優(yōu)勢互補,是一種高效開放的開發(fā)模式。