根据模板的AM数据信息提取插件设计
来源:互联网 发布:ps合成图片软件 编辑:程序博客网 时间:2024/04/30 02:17
根据模板的AM数据信息提取插件设计
by eattonton
1.说明
从AM(Aveva Marine)软件中提取数据是设计工作的重要内容之一。对于软件开发人员来说,往往会根据业务需要,编写相应的AM插件Addin程序。这些程序都会涉及数据的提取。同时,由于不同的业务对数据的内容往往会不一样,比如抽取钢板清单会关注板规、材质;抽取模型信息会关注零件厚度、材质等等。这就导致数据抽取的方式不同,需要开发者每次开发都写一些数据提取的类似代码。同时,随着软件功能的增加和修改,维护这个程序变很麻烦。最终可能导致这个程序失败。能不能找到一种数据提取与程序分开的设计呢?下面我将设计这样的一个小程序。
2.程序框架
由于AM提供了丰富的数据访问接口,我们完全可以利用这些接口,把数据访问进行优化。下面我们提出了一种基于类型模板的数据读取机制。流程如下:
节点DbElement
PDMS数据树中的数据节点,其中包含了很多信息,以及关联信息。
节点模板
Template
外部自定义的数据属性,以及访问方式。
Hashtable表
这个是最终获取的表格。里面包含了所需提取的信息。
3.模板Template的设计
从上面的流程可以看出,为了实现数据提取与程序分开,我们只需设计一个数据模板Template和解析模块的处理程序就可以了。
其中,模板Template是我们的设计重点,下面将解释Template的数据结构。
{ etype : 节点类型 ,
atts:[
{aname : 属性 , atype : 类型 , atitle : 属性名 , childs :[子元素]}]
}
etype
节点DbElement的类型Type,如HPLATE,HSTIFF等
atts
是一个属性数组
aname
属性的名称
atype
属性的类型,系统设置了string,double,int,position,doubles,element,
elements等类型
atitle
属性的名称
childs
是可选项,当atype属性类型为element或者elements时,childs表示关联节点element的属性。如一个零件所在的组立信息,或者套料信息等。
整个模板的设计简单明了,这个也是为了方便后续的添加。其中element是相关联的对象,获取相关联对象的属性就必须设置childs属性,并且可以嵌套。这样就可以实现树节点的属性数据访问。
下面举一个HPLATE类型DbElement的例子:
首先,设置模板Template
{"etype":"HPLATE","atts":[ {"aname":"OWNER","atype":"string","atitle":"OWNER"}, {"aname":"TBID","atype":"int","atitle":"TBID"}, {"aname":"PRTIDL","atype":"string","atitle":"零件名"}, {"aname":"THICKN","atype":"string","atitle":"厚度"}, {"aname":"QUATXT","atype":"string","atitle":"材质"}, {"aname":"PLAREA","atype":"string","atitle":"表面积"}, {"aname":"GWEI","atype":"string","atitle":"重量"}, {"aname":"HCOFG","atype":"position","atitle":"重心"}, {"aname":"ASMOWN","atype":"element","atitle":"组立", "childs":[{"etype":"ASMBLY", "atts":[ {"aname":"NAMN","atype":"string","atitle":"组立名"}, {"aname":"ASWLOC","atype":"string","atitle":"组立1"}, {"aname":"ASDEST","atype":"string","atitle":"组立2"}] }]}, {"aname":"PARREF","atype":"elements","atitle":"零件", "childs":[{"etype":"MPLATE", "atts":[ {"aname":"NAMN","atype":"string","atitle":"内部名"}, {"aname":"HRDPRX","atype":"elements","atitle":"生产信息", "childs":[{"etype":"MPLNST", "atts":[ {"aname":"NAMN","atype":"string","atitle":"套料板"}] }] }] }] }]}
通过解析之后获得数Hashtable表如下:
NEW HPLATE idsp 2002 of HPANEL /202-TT1A TYPE:=HPLATE OWNER:=/202-TT1A TBID:=2002 表面积:=18803286mm2 材质:=AH32 厚度:=13mm 零件名:=202-TT1M-K3 内部名:=202-TT1A-2SP 套料板:=202-A32-1301 重量:=1918.9kg 重心:=[66686.109,-6048.089,1773.500] 组立1:=H 组立2:=U 组立名:=999/60B/202/000/TT1MEND
数据的获取完全可以通过定制模板Template来完成,而不用再编写额外的程序。
4.小结
AM软件对数据的访问提供了很多便捷的方式。我这里编写的方法可能不是最好的,不过,也提供了一种方法,增加了一个思路。随着,开发项目的增多,以及经验的积累。AM数据的获取将变的越来越方便,也能够为工程师engineering提供更多更全面的数字化生产信息。
喜欢的朋友也可以关注我们的博客,或者扫描下面的二维码关注我们的公众号:TriWebMarine
TriWebMarine由TriWeb.cn团队支持,TriWeb.cn团队专注海洋工程数字化资产管理。
- 根据模板的AM数据信息提取插件设计
- 根据模板提取变量
- 根据时间提取介于某个时间段的信息
- 提取数据的变量信息content
- 根据员工编号提取员工信息
- 信息系统的快速开发(3)数据信息的提取
- 如何使用ArcMap提取地图数据的坐标信息
- 如何使用ArcMap提取地图数据的坐标信息
- chrome插件:提取页面数据
- ExtJS 插件 --- RowExpander 格式化模板的数据
- 根据Excel模板导出数据
- Java中根据模板导出数据到word的解决方案
- 根据excel的文件的路径提取其中表的数据到DataSet中
- 设计一个脚本,根据关键字提取整段话中关键字所在的句子
- Java 根据模板导出Excel时,如何根据后台数据设置复选框的勾选
- jQuery提取元数据Metadata插件
- 根据java的设计原则、设计模式实现了一个信息发送和接收的例子
- 视觉信息的提取建模
- find常见用法示例
- (java)leetcode-9
- Spring+SpringMVC+MongoDB案例
- Hive四种数据导入方式 (三)
- 装双系统出现“无法找到存活的文件系统”的解决办法
- 根据模板的AM数据信息提取插件设计
- 不良资产处置,正在爆发的10万亿蓝海市场
- 【北邮OJ】277. 内存分配-网研14-计算机二14
- LeetCode:Reverse Integer
- The case for the reduced Instruction Set computer读后感
- 百度一面(电话面试)总结
- Linux—20条命令(二)
- 大数据实时处理实战
- Java前期(静态)绑定和后期(动态)绑定