根据模板的AM数据信息提取插件设计

2019-04-14 19:38发布

根据模板的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团队专注海洋工程数字化资产管理。