劉逸飛
(中海油石化工程有限公司,山東 濟南 250101)
Intergraph Smart3D(簡稱S3D)是新一代數(shù)字化工廠設計系統(tǒng),近年來廣泛使用于化工行業(yè)工程設計中。S3D具有集成化的建模與圖表功能、靈活可變的樹狀結(jié)構(gòu)和可定制的對象屬性,可以滿足工程設計中各種需求及應用擴展[1]。

圖1 工作流程簡圖
ISO圖是化工設計中一種重要的設計文件。設計要求每根管線的ISO圖應有獨立的圖號,并需要編制ISO圖索引。根據(jù)S3D的出圖機理,并結(jié)合項目需求優(yōu)化了工作流程,并利用VB.net對S3D進行二次開發(fā),可實現(xiàn)批量導入導出管線圖號及自動編制ISO圖索引,優(yōu)化后的工作流程見圖1。
為pipeline添加屬性的操作,可在建模之前或之后進行。具體操作如下:
(1)編輯CustomInterface表格文件,增加DWGNumber屬性。見圖2和圖3。

圖2 添加屬性1

圖3 添加屬性2
(2)使用Bulkload工具,用AMD方式導入CustomInterface表格文件。導入完成后,在pipeline的屬性對話框中即可看到添加的DWGNumber屬性,見圖 4。

圖4 查看或修改Pipeline屬性
使用VB.net對S3D二次開發(fā)的程序,可查看并導出項目中的管線清單表格文件,見圖 5。清單可導出到Excel中,方便將管線對應的圖號填入清單。

圖5 查看pipeline清單
獲取管線清單的功能,可使用以下代碼實現(xiàn):
Dim oPropertyFilter As New Filter
Dim oProperty As PropertyValueString
oProperty = New PropertyValueString("IJNamedItem", "Name", "")
oPropertyFilter.Definition.AddWhereProperty(oProperty,PropertyComparisonOperators.NE)
oPropertyFilter.Definition.AddObjectType("SystemsPipelineSystems")
oPipelines = oPropertyFilter.Apply()
For i = 0 To oPipelines.Count - 1
oPipeline = CType(oPipelines.Item(i), Pipeline)
DataGridView1.Rows.Add()
DataGridView1.Rows(i).Cells(0).Value = i + 1
DataGridView1.Rows(i).Cells(1).Value = oPipeline.SystemParent.ToString()
DataGridView1.Rows(i).Cells(2).Value = oPipeline.ToString()
DataGridView1.Rows(i).Cells(3).Value = oPipeline.GetPropertyValue("IJUAPipeline", "DWGNumber").ToString
Next
利用二次開發(fā)程序可將帶有圖號信息的管線清單表格文件批量導入到項目數(shù)據(jù)庫中,導入的結(jié)果可隨機查看,見圖 6。

圖6 導入pipeline圖號并查看清單
因項目要求不同分區(qū)的同號管線,要有不同的ISO圖圖號,所以導入圖號過程中,要同時匹配pipeline和piping system屬性值。導入管線圖號的功能,可使用以下代碼實現(xiàn):
Dim oPropertyFilter As New Filter, oProperty As PropertyValueString
oProperty = New PropertyValueString("IJNamedItem", "Name", strPipelineName)
oPropertyFilter.Definition.AddWhereProperty(oProperty, PropertyComparisonOperators.EQ)
oPropertyFilter.Definition.AddObjectType("SystemsPipelineSystems")
oPipelines = oPropertyFilter.Apply()
For i = 0 To oPipelines.Count - 1
oPipeline = CType(oPipelines.Item(i), Pipeline)
If oPipeline.SystemParent.ToString() = strParentName Then
oPipeline.SetPropertyValue(strSequenceNo, "IJUAPipeline","DWGNumber")
MiddleServiceProvider.TransactionMgr.Commit("")
End If
Next
需要將圖號寫在ISO圖上。先為DWGNumber屬性創(chuàng)建LABEL,見圖7。

圖7 新建圖號label
再在ISO圖標題欄制定位置顯示該LABEL,見圖 8。

圖8 定制ISO出圖格式
生成的ISO圖可另存為XML文件和PCF文件等均包含管線信息。本工作流程選擇讀取XML文件,XML文件包括“HEADER”等幾個段落。在“HEADER”段落中,包含所需的屬性值,見表 1。利用LINQ TO XML技術開發(fā)的程序,可實現(xiàn)批量獲取其中的圖號、頁數(shù)等屬性值,編制索引文件。

表 1 XML文件相關節(jié)點
利用二次開發(fā)的工具和優(yōu)化的工作流程,可以快速實現(xiàn)ISO圖填寫圖號和編制ISO圖索引的目的,可大大減少建模外的簡單重復勞動,提高設計質(zhì)量和工作效率。
[1] 黃建芳.Smart 3D基于PCF二次開發(fā)報表的實現(xiàn)[J].中國勘察設計,2016(6):99-102.