劉逸飛
(中海油石化工程有限公司,山東 濟(jì)南 250101)
Intergraph Smart3D(簡稱S3D)是新一代數(shù)字化工廠設(shè)計(jì)系統(tǒng),近年來廣泛使用于化工行業(yè)工程設(shè)計(jì)中。S3D具有集成化的建模與圖表功能、靈活可變的樹狀結(jié)構(gòu)和可定制的對象屬性,可以滿足工程設(shè)計(jì)中各種需求及應(yīng)用擴(kuò)展[1]。
圖1 工作流程簡圖
ISO圖是化工設(shè)計(jì)中一種重要的設(shè)計(jì)文件。設(shè)計(jì)要求每根管線的ISO圖應(yīng)有獨(dú)立的圖號,并需要編制ISO圖索引。根據(jù)S3D的出圖機(jī)理,并結(jié)合項(xiàng)目需求優(yōu)化了工作流程,并利用VB.net對S3D進(jìn)行二次開發(fā),可實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出管線圖號及自動(dòng)編制ISO圖索引,優(yōu)化后的工作流程見圖1。
為pipeline添加屬性的操作,可在建模之前或之后進(jìn)行。具體操作如下:
(1)編輯CustomInterface表格文件,增加DWGNumber屬性。見圖2和圖3。
圖2 添加屬性1
圖3 添加屬性2
(2)使用Bulkload工具,用AMD方式導(dǎo)入CustomInterface表格文件。導(dǎo)入完成后,在pipeline的屬性對話框中即可看到添加的DWGNumber屬性,見圖 4。
圖4 查看或修改Pipeline屬性
使用VB.net對S3D二次開發(fā)的程序,可查看并導(dǎo)出項(xiàng)目中的管線清單表格文件,見圖 5。清單可導(dǎo)出到Excel中,方便將管線對應(yīng)的圖號填入清單。
圖5 查看pipeline清單
獲取管線清單的功能,可使用以下代碼實(shí)現(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ā)程序可將帶有圖號信息的管線清單表格文件批量導(dǎo)入到項(xiàng)目數(shù)據(jù)庫中,導(dǎo)入的結(jié)果可隨機(jī)查看,見圖 6。
圖6 導(dǎo)入pipeline圖號并查看清單
因項(xiàng)目要求不同分區(qū)的同號管線,要有不同的ISO圖圖號,所以導(dǎo)入圖號過程中,要同時(shí)匹配pipeline和piping system屬性值。導(dǎo)入管線圖號的功能,可使用以下代碼實(shí)現(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圖標(biāo)題欄制定位置顯示該LABEL,見圖 8。
圖8 定制ISO出圖格式
生成的ISO圖可另存為XML文件和PCF文件等均包含管線信息。本工作流程選擇讀取XML文件,XML文件包括“HEADER”等幾個(gè)段落。在“HEADER”段落中,包含所需的屬性值,見表 1。利用LINQ TO XML技術(shù)開發(fā)的程序,可實(shí)現(xiàn)批量獲取其中的圖號、頁數(shù)等屬性值,編制索引文件。
表 1 XML文件相關(guān)節(jié)點(diǎn)
利用二次開發(fā)的工具和優(yōu)化的工作流程,可以快速實(shí)現(xiàn)ISO圖填寫圖號和編制ISO圖索引的目的,可大大減少建模外的簡單重復(fù)勞動(dòng),提高設(shè)計(jì)質(zhì)量和工作效率。
[1] 黃建芳.Smart 3D基于PCF二次開發(fā)報(bào)表的實(shí)現(xiàn)[J].中國勘察設(shè)計(jì),2016(6):99-102.