根据模板的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/TT1M
END
数据的获取完全可以通过定制模板Template来完成,而不用再编写额外的程序。
4.小结
AM软件对数据的访问提供了很多便捷的方式。我这里编写的方法可能不是最好的,不过,也提供了一种方法,增加了一个思路。随着,开发项目的增多,以及经验的积累。AM数据的获取将变的越来越方便,也能够为工程师engineering提供更多更全面的数字化生产信息。
喜欢的朋友也可以关注我们的博客,或者扫描下面的二维码关注我们的公众号:TriWebMarine
TriWebMarine由TriWeb.cn团队支持,TriWeb.cn团队专注海洋工程数字化资产管理。