• 美文
  • 文章
  • 散文
  • 日记
  • 诗歌
  • 小说
  • 故事
  • 句子
  • 作文
  • 签名
  • 祝福语
  • 情书
  • 范文
  • 读后感
  • 文学百科
  • 当前位置: 柠檬阅读网 > 范文 > 正文

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

    时间:2023-02-27 17:00:05 来源:柠檬阅读网 本文已影响 柠檬阅读网手机站

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

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

    建造事业部的海洋石油工程项目中,加工设计中心配管专业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中。

    手动处理图纸材料表,主要需要以下步骤:

    (1)将REPORT文件逐个打开,按照不同类型的文件,分别复制到不同的EXCEL表格中.

    (2)按照SPOOLGEN风格包的格式,提取材料属性(使用EXCEL提供的数据——分列功能).

    (3)按照属性的对照关系,将*Material.MTC文件的内容,逐列复制到图纸材料表中。

    (4)将*Spool.log文件中的单管延米、面积按照管线号、单管号、尺寸填入图纸材料表。

    (5)计算*Welds.LIS文件中的不同管线、单管、尺寸、类型的焊点数量,填入图纸材料表。

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

    图1 程序流程

    本案例中程序先读取不同类型的文件,再对数据提取属性,对数据进行处理后,分别写入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;

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

    猜你喜欢 单管焊点图纸 SABI333焊点拉伸性能及晶界对焊点拉伸性能影响北京工业大学学报(2021年9期)2021-09-14大型PCCP压力管道单管水压试验建材发展导向(2021年10期)2021-07-16浅谈汽车线束产品图纸管理汽车实用技术(2020年16期)2020-09-06汽车白车身焊接强度检测汽车与驾驶维修(维修版)(2020年6期)2020-07-06单管试压简易模具的设计及应用石油化工建设(2019年6期)2020-01-16基于Multisim的单管共射放大电路设计与仿真分析电子制作(2019年22期)2020-01-14看图纸当代工人(2019年20期)2019-12-13整车焊点失效预测的研究及应用汽车工程(2019年2期)2019-03-11基于均匀化循环理论的车身焊点布局优化方法中国机械工程(2018年19期)2018-10-22模具图纸在全生命周期内的信息管理系统研究制造技术与机床(2017年9期)2017-11-27
    相关热词搜索: 工程项目 提取 海洋

    • 文学百科
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章