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