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

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

by eattonton 

1.说明

      从AM(Aveva Marine)软件中提取数据是设计工作的重要内容之一。对于软件开发人员来说,往往会根据业务需要,编写相应的AM插件Addin程序。这些程序都会涉及数据的提取。同时,由于不同的业务对数据的内容往往会不一样,比如抽取钢板清单会关注板规、材质;抽取模型信息会关注零件厚度、材质等等。这就导致数据抽取的方式不同,需要开发者每次开发都写一些数据提取的类似代码。同时,随着软件功能的增加和修改,维护这个程序变很麻烦。最终可能导致这个程序失败。能不能找到一种数据提取与程序分开的设计呢?下面我将设计这样的一个小程序。

2.程序框架

      由于AM提供了丰富的数据访问接口,我们完全可以利用这些接口,把数据访问进行优化。下面我们提出了一种基于类型模板的数据读取机制。流程如下:

 根据模板的AM数据信息提取插件设计_第1张图片

节点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

根据模板的AM数据信息提取插件设计_第2张图片

TriWebMarine由TriWeb.cn团队支持,TriWeb.cn团队专注海洋工程数字化资产管理。

 

 

你可能感兴趣的:(AVEVA)