鄭 帥,謝明明,王 焱,羅智平
(中國五環(huán)工程有限公司,湖北 武漢 430223)
隨著三維設計軟件在化工工程詳細設計工作中的普及,管道材料統(tǒng)計工作已實現(xiàn)依據(jù)三維模型數(shù)據(jù)庫進行自動化精準輸出,大幅提高了管道布置設計人員的工作效率。
但對于項目前期報價階段的管道材料統(tǒng)計工作,由于沒有三維模型數(shù)據(jù)庫支撐,只能采用傳統(tǒng)工作方式進行統(tǒng)計匯總。在此過程中,需要頻繁查閱材料等級文件,并對材料數(shù)量進行分類匯總,工作效率和質量均較難保證。本文討論如何利用程序輔助完成管道材料統(tǒng)計匯總工作,實現(xiàn)規(guī)范化生成管道材料匯總表,以提高數(shù)據(jù)質量和工作效率。
根據(jù)工程實際需求,本程序需要解決項目前期報價階段,編制管道材料匯總表的數(shù)據(jù)規(guī)范性問題,并提供數(shù)據(jù)輸入后自動輸出成品文件的功能。程序規(guī)劃架構見圖1,首先將材料等級文件讀取并寫入程序數(shù)據(jù)庫,然后根據(jù)用戶在程序界面中輸入的管道材料信息,與數(shù)據(jù)庫內的材料等級文件信息進行匹配,最終匯總輸出成品管道材料匯總表。程序功能的實現(xiàn)涉及到對Word/Excel文件、數(shù)據(jù)庫的讀寫等技術難點。本程序是基于.NET平臺開發(fā),通過調用成熟的.NET類庫來解決上述技術難點。
報價項目的管道材料等級文件以及管道材料匯總表多以Word或Excel格式存儲,為了獲取材料等級信息和輸出成品,程序需要與上述文件發(fā)生讀取和輸出交互。本程序是基于.NET平臺開發(fā)的,而.NET平臺對Word/Excel文件操作主要有三種方式:Ole方式、調用Word/Excel的COM組件方式、使用第三方類庫(NPOI、Aspose、Spire等)方式。
本程序通過使用Asposefor.NET(包括Aspose.Words與Aspose.Cells)實現(xiàn)與Word/Excel文件的交互操作。
使用Aspose.Words加載Word文件后,會在內存中生成一個文檔對象模型(DOM)映射。DOM內的樹形對象結構見圖2。Document對象是文檔樹的根節(jié)點,可通過節(jié)點類型和節(jié)點間繼承關系獲取其子節(jié)點集合(NodeCollection),程序可以通過循環(huán)遍歷該集合獲取相應子節(jié)點信息并進行讀寫操作。
使用Aspose.Cells加載Excel文件后,同樣會在內存中生成一個映射,該映射包含Workbook、Worksheet、Cells等對象類型。其中,Workbook對象提供訪問整個Excel文件的入口。與Aspose.Words的DOM不同的是,Aspose.Cells內并不存在上述對象間的繼承關系,而是采用了類似Excel的數(shù)據(jù)存數(shù)結構:一個Excel文件對應一個Workbook對象,一個Workbook對象可包含多個Worksheet對象,數(shù)據(jù)直接存儲到Worksheet下屬的Cells對象內。程序可通過行、列索引直接定位到對應單元格,之后就能對該單元格數(shù)據(jù)進行讀寫操作。
在獲取Word/Excel文件內的材料等級信息后,需要將這些信息寫入程序數(shù)據(jù)庫。待用戶輸入查詢條件信息后,程序從數(shù)據(jù)庫讀取符合查詢條件的材料等級信息,并反饋到程序界面上。上述過程涉及到程序與數(shù)據(jù)庫間的讀寫交互。本程序采用SQLite數(shù)據(jù)庫,通過ADO.NET技術實現(xiàn)與SQLite數(shù)據(jù)庫的交互。
ADO.NET是微軟公司新一代.NET數(shù)據(jù)庫的訪問模型,是目前數(shù)據(jù)庫程序設計人員用來開發(fā)基于.NET平臺數(shù)據(jù)庫應用程序的主要接口。ADO.NET是一個類庫,提供了很多用于完成數(shù)據(jù)庫連接和增刪改查(CRUD)操作的對象,其結構模型見圖3。
ADO.NET提供了兩種操作SQLite數(shù)據(jù)庫的方式:①使用SQLiteConnection、SQLiteCommand、SQLiteDataReader,其權限只能讀取或查詢數(shù)據(jù)庫;②使用SQLiteConnection、SQLiteCommand、SQLiteDataAdapter、DataSet數(shù)據(jù)集,其權限可進行各種數(shù)據(jù)庫讀寫操作。
本程序涉及的數(shù)據(jù)庫分為兩類:一類是通過材料等級Word/Excel文件獲取,如管道材料等級表、管道壁厚表及支管連接表等數(shù)據(jù),這類數(shù)據(jù)通過文件導入程序數(shù)據(jù)庫;另一類通過相關標準規(guī)范獲取,如異徑管變徑口徑范圍、三通支管口徑范圍、法蘭匹配螺栓長度及螺栓數(shù)量等數(shù)據(jù),這類數(shù)據(jù)在程序數(shù)據(jù)庫中內置。其中,文件導入界面見圖4所示。
導入操作流程如下:①輸入項目代號,如TEST;②選擇材料等級文件內使用的單位格式(公制/英制);③選擇材料等級文件的格式(Word/Excel);④選擇要導入的材料等級文件類型(等級表/支管表/壁厚表);⑤點擊“瀏覽”按鈕,彈出加載文件窗口,選擇材料等級文件存放路徑;⑥點擊“預覽”按鈕,將會在程序下方預覽窗口內顯示讀取到的相關數(shù)據(jù);⑦點擊“寫入”按鈕,將預覽窗口內數(shù)據(jù)寫入后臺數(shù)據(jù)庫。
本程序材料統(tǒng)計與匯總界面見圖5,主要包括上下兩部分。界面上方為用戶選擇管道材料區(qū)域,界面下方是顯示用戶已錄入材料信息區(qū)域。統(tǒng)計與匯總操作流程如下:①輸入管線號(一般從CAD文件復制);②輸入管線號分隔符以及等級、口徑所在的位數(shù)(同一個項目一般只需輸入一次),點OK按鈕,程序獲取等級名及口徑信息;③選擇材料類型(TUBE/ELBO/REDU/TEE等),程序會從數(shù)據(jù)庫篩選符合要求的材料名稱,并在右側候選列表顯示;④用戶在候選列表內選擇所需的材料名稱,此時程序會查詢數(shù)據(jù)庫,將所選擇元件條目的標準、材質、規(guī)格、壁厚等信息自動填充到界面右側對應文本框內;⑤輸入該元件的數(shù)量,點“添加”按鈕,將該條記錄寫入數(shù)據(jù)庫;⑥重復①-⑤步驟,直至將所有管線數(shù)據(jù)錄入完畢。
待錄入完畢后,點擊“生成Excel”按鈕,即可導出相應的成品Excel文件,包括管道綜合材料表(見圖6)和管道安裝材料表(見圖7)。
從運行結果可以看出,本程序生成的管道材料匯總表文件的內容及格式均可滿足報價項目需求。
通過調用Aspose For.Net的Word/Excel類庫、ADO.NET類庫,實現(xiàn)了程序化輸入材料和規(guī)范化輸出材料匯總表文件,證明使用程序輔助報價項目材料統(tǒng)計匯總工作的可行性。在項目報價階段使用本程序,可高效、準確輸出規(guī)范化的材料匯總表文件,為項目精細化管理提供有力的信息化技術支撐。同時,本程序使用現(xiàn)有類庫進行集成開發(fā)的思路也可為今后工程信息化程序開發(fā)工作提供借鑒。