前言:想要写出一篇引人入胜的文章?我们特意为您整理了谈海洋石油工程项目材料信息提取范文,希望能给你带来灵感和参考,敬请阅读。
摘要:建造事业部的海洋石油工程项目,加工设计配管专业使用SPOOLGEN软件绘制管线ISO图,SPOOLGEN软件可生成ISO图和一系列REPORT文件,REPORT文件提供了图纸材料、焊点、延米、表面积等信息。使用传统方法需要将材料手动录入图纸材料表,由于材料信息分布在不同类型的REPORT文件中,统计材料不仅工作量大、步骤繁琐、耗费时间,也容易出错。本案例采用CSharp编程实现了图纸材料信息的提取。
关键词:CSharp;C#;SPOOLGEN;REPORT;报表;材料;提取
1引言
建造事业部的海洋石油工程项目中,加工设计中心配管专业SPOOLGEN软件生成的REPORT文件数量多、信息多。图纸材料表包含五十多列内容,一个项目图纸的数据量动辄几千张甚至上万张,使用人工统计材料已经占用越来越多的时间,急需通过其他手段批量处理这些数据。SPOOLGEN软件生成的REPORT文件为文本文件,主要有以下几类文件:(1)*ASSEMBLY.TXT文件,包含安装信息,建造事业部图纸材料表不包含此类信息,本案例只对数据提取属性,不做后期处理;(2)*Cut.CSV文件,包含管段信息,本案例只对数据提取属性;(3)*Material.MTC文件,包含材料的尺寸、规格等信息,需要将数据整理后导入图纸材料表;(4)*Spool.log文件,包含单管的延米、表面积等信息,需要将延米和表面积导入图纸材料表;(5)*Support.TXT文件,包含管支架信息,本案例只对数据提取属性;(6)*Welds.LIS文件,包含焊点信息,需要将焊点信息导入图纸材料表。SPOOGEN生成的REPORT文件以及文件中的数据结构是由风格包决定的,建造事业部已经对国内海洋石油工程项目进行了标准化,编写程序可以用于所有使用标准化风格包的国内项目。综上所述,本案例中的程序需要将*Material.MTC、*Spool.log、*Welds.LIS文件的数据处理后导入图纸材料表中。本案例采用CSharp编程需要实现以下几点:(1)将REPORT文件数据提取属性后导入EXCEL中;(2)将*Material.MTC、*Spool.log、*Welds.LIS文件的数据处理后导入图纸材料表中。(3)将错误信息展现并导入EXCEL中。
2程序流程
手动处理图纸材料表,主要需要以下步骤:(1)将REPORT文件逐个打开,按照不同类型的文件,分别复制到不同的EXCEL表格中.(2)按照SPOOLGEN风格包的格式,提取材料属性(使用EXCEL提供的数据———分列功能).(3)按照属性的对照关系,将*Material.MTC文件的内容,逐列复制到图纸材料表中。(4)将*Spool.log文件中的单管延米、面积按照管线号、单管号、尺寸填入图纸材料表。(5)计算*Welds.LIS文件中的不同管线、单管、尺寸、类型的焊点数量,填入图纸材料表。本案例用CSharp编程遵循这种业务流程,设计的程序的基本流程参照图1。
3程序核心功能的实现
本案例中程序先读取不同类型的文件,再对数据提取属性,对数据进行处理后,分别写入EXCEL中。
3.1数据读取和属性提取
SPOOLGEN软件REPORT文件都属于文本文件,其数据的读取,使用FileReadAllLines方法,如下所示,listFile为包含同一类型文件的集合:REPORT文件数据读取完成后,需要对每一行数据进行分割,提取出数据的各种属性,数据提取依据SPOOLGEN风格包,见图2。REPORT文件数据的每个属性都是固定长度的字段,不足部分为空格。SPOOLGEN软件风格包中确定了每个属性的起始位置和字段长度。每个属性只需要提取固定位置和长度的字段就可以,在程序中使用Substring方法,简略代码如下所示,其中intList为存储SPOOLGEN风格包中每个属性起始起始位置的集合。
3.2图纸材料表的生成
图纸材料表中的数据主要来源于*Material.MTC文件,材料属性位置不同,需要通过对照关系从*Material.MTC映射到图纸材料表中,创建一个两者关系的字典来实现。代码如下所示,其中arrMat为存储*Material.MTC文件的一个二维数组,dicMap为图纸材料表和*Material.MTC文件中材料属性位置的字典。
3.3焊点信息
为图纸材料表添加焊点信息,需要先将*Welds.LIS文件中的管线号、单管号、尺寸相同的各种类型焊点汇总,再将焊点输入图纸材料表的合适位置。焊点类型主要包括预制对焊、现场对焊、插焊、管鞋预制焊、管鞋现场焊。判断焊接类型根据WeldNo和WeldType属性来判断。在本案例中,WeldNo带“FW”前缀的为现场焊;不带“FW”,且WeldType为“BW”的为预制焊;WeldType为“BW+T”的为现场预制焊,归属到现场焊中。
3.4单管延米、面积
单管的延米和面积信息在*Spool.log文件中,需要将对应管线号、单管号、尺寸的延米和面积添加到图纸材料表中。其中,“Length”列为单管长度“Acreage_Sqm”列为单管的表面积。需要注意,由于SPOOLGEN的IDF文件可能会存在错误,*Welds.LIS文件和*Spool.log文件中,会存在尺寸丢失、尺寸错误的现象,在DO系统中地漏和管线之间的焊点经常出现这一问题。这时候,焊点和延米的信息无法按照固有规则导入图纸材料表中,需要程序能捕捉的这些错误,并提醒作图人员根据图纸上的信息核对并修改图纸材料表。
3.5信息的输出
本案例中,图纸材料表需要输出到EXCEL文件中。在程序中添加引用,选择MicrosoftOfficeExcel应用程序中的Microsoft.Office.Interop.Excel.dll文件,在程序引用命名空间部分,添加:“usingMicrosoft.Office.Interop.Excel;”。这样Csharp编写的程序就能读写EXCEL文件。使用Microsoft.Office.Interop.Excel.dll这个COM组件,可以将数组直接写入表格中,在数据量大的时候,相比逐个单元格赋值,能获得更快的写入速度。其代码如下所示,其中arr为存储图纸材料表的一个二维数组。
4结语
本案例程序的开发,实现了对SPOOLGEN软件REPORT文件数据的读取和图纸材料表的生成。手工处理一张图的材料需要10~20min,使用软件处理一批图纸(通常几十张图纸的REPORT文件一起处理)1~2min就能完成。从软件完成至今,大约为建造事业部加工设计中心处理了50000多张图纸,累计节省8000人工时以上。而海洋石油工程项目中,配管专业图纸数量多的特性也让软件有较为广阔的前景;建造事业部加工设计中心对SPOOLGEN风格包的标准化也为软件的推广创造了有利的条件。
作者:丰兴盛 蒋小华 黄太安 王可民 史其麒 单位:海洋石油工程股份有限公司建造事业部加工设计中心