APP下载

海洋石油工程项目配管材料信息提取

2020-11-25丰兴盛蒋小华黄太安王可民史其麒

山东化工 2020年20期
关键词:单管焊点图纸

丰兴盛,蒋小华,黄太安,王可民,史其麒

(海洋石油工程股份有限公司建造事业部加工设计中心,山东 青岛 266520)

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文件中的不同管线、单管、尺寸、类型的焊点数量,填入图纸材料表。

本案例用C Sharp编程遵循这种业务流程,设计的程序的基本流程参照图1。

图1 程序流程

3 程序核心功能的实现

本案例中程序先读取不同类型的文件,再对数据提取属性,对数据进行处理后,分别写入EXCEL中。

3.1 数据读取和属性提取

SPOOLGEN软件REPORT文件都属于文本文件,其数据的读取,使用FileReadAllLines方法,如下所示,listFile为包含同一类型文件的集合:

List strList = new List();

for(int i = 0; i < listFile.Count; i++)

{string[]arr = File.ReadAllLines(listFile[i],Encoding.UTF8);

for(int j = 0; j < arr.Length; j++)

{strList.Add(arr[i]);

}

}

REPORT文件数据读取完成后,需要对每一行数据进行分割,提取出数据的各种属性,数据提取依据SPOOLGEN风格包,见图2。

图2 SPOOLGEN风格包

REPORT文件数据的每个属性都是固定长度的字段,不足部分为空格。SPOOLGEN软件风格包中确定了每个属性的起始位置和字段长度。每个属性只需要提取固定位置和长度的字段就可以,在程序中使用Substring方法,简略代码如下所示,其中intList为存储SPOOLGEN风格包中每个属性起始起始位置的集合。

string[]arr = new string[strList.Count, intList.Count-1];

for(int i = 0; i < strList.Count; i++)

{

int intLen = strList[i].Length;

for(int j = 0; j < intList.Count-1; j++)

{

int start = intList[i];

int end = intList[j+1];

if(start > intLen)

{

arr[i,j]= "";

}

else

{

end = Math.Min(end, intLen);

arr[i,j]=strList[i].Substring(start, end-start).Trim();

}

}

}

3.2 图纸材料表的生成

图纸材料表中的数据主要来源于*Material.MTC文件,材料属性位置不同,需要通过对照关系从*Material.MTC映射到图纸材料表中,创建一个两者关系的字典来实现。代码如下所示,其中arrMat为存储*Material.MTC文件的一个二维数组,dicMap为图纸材料表和*Material.MTC文件中材料属性位置的字典。

string[]arrMaterial = new string[arrMat.GetLength(0), 60];

for(int i = 0; i < arrMat.GetLength(0); i++)

{

arrMaterial[i,0]=(i + 1).ToString();

foreach(KeyValuePair kvp in dicMap)

{

arrMaterial[i,kvp.key]=arrMat[i,kvp.value].Trim();

}

}

3.3 焊点信息

为图纸材料表添加焊点信息,需要先将*Welds.LIS文件中的管线号、单管号、尺寸相同的各种类型焊点汇总,再将焊点输入图纸材料表的合适位置。焊点类型主要包括预制对焊、现场对焊、插焊、管鞋预制焊、管鞋现场焊。判断焊接类型根据Weld No和Weld Type属性来判断。在本案例中,Weld No带“FW”前缀的为现场焊;不带“FW”,且Weld Type为“BW”的为预制焊;Weld Type为“BW+T”的为现场预制焊,归属到现场焊中。

图3 焊点类型判断条件

3.4 单管延米、面积

单管的延米和面积信息在*Spool.log文件中,需要将对应管线号、单管号、尺寸的延米和面积添加到图纸材料表中。其中,“Length”列为单管长度“Acreage_Sqm”列为单管的表面积。

图4 延米和面积

需要注意,由于SPOOLGEN的IDF文件可能会存在错误,*Welds.LIS文件和*Spool.log文件中,会存在尺寸丢失、尺寸错误的现象,在DO系统中地漏和管线之间的焊点经常出现这一问题。这时候,焊点和延米的信息无法按照固有规则导入图纸材料表中,需要程序能捕捉的这些错误,并提醒作图人员根据图纸上的信息核对并修改图纸材料表。

3.5 信息的输出

本案例中,图纸材料表需要输出到EXCEL文件中。在程序中添加引用,选择Microsoft Office Excel应用程序中的Microsoft.Office.Interop.Excel.dll文件,在程序引用命名空间部分,添加:“using Microsoft.Office.Interop.Excel;”。这样C sharp编写的程序就能读写EXCEL文件。

图5 引用COM组件

使用Microsoft.Office.Interop.Excel.dll这个COM组件,可以将数组直接写入表格中,在数据量大的时候,相比逐个单元格赋值,能获得更快的写入速度。其代码如下所示,其中arr为存储图纸材料表的一个二维数组。

string path = System.Windows.Forms.Application.StartupPath;

string fullName = path + @"DataModule.xlsx";

Application exlApp = new Application();

exlApp.ScreenUpdating = false;

exlApp.Visible = false;

Workbook wb = exlApp.Workbooks.Open(fullName);

Worksheet ws =(Worksheet)wb.Sheets["图料表"];

ws.Activate();

ws.Cells[3,1].Resize[arr.GetLength(0),arr.GetLength(1)]=arr;

exlApp.S

creenUpdating = true;

exlApp.Visible = true;

4 结语

本案例程序的开发,实现了对SPOOLGEN软件REPORT文件数据的读取和图纸材料表的生成。手工处理一张图的材料需要10~20min,使用软件处理一批图纸(通常几十张图纸的REPORT文件一起处理)1~2min就能完成。从软件完成至今,大约为建造事业部加工设计中心处理了50000多张图纸,累计节省8000人工时以上。而海洋石油工程项目中,配管专业图纸数量多的特性也让软件有较为广阔的前景;建造事业部加工设计中心对SPOOLGEN风格包的标准化也为软件的推广创造了有利的条件。

猜你喜欢

单管焊点图纸
SABI333焊点拉伸性能及晶界对焊点拉伸性能影响
大型PCCP压力管道单管水压试验
浅谈汽车线束产品图纸管理
汽车白车身焊接强度检测
单管试压简易模具的设计及应用
基于Multisim的单管共射放大电路设计与仿真分析
看图纸
整车焊点失效预测的研究及应用
基于均匀化循环理论的车身焊点布局优化方法
模具图纸在全生命周期内的信息管理系统研究