根據模板的AM數據信息提取插件設計

根據模板的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團隊專注海洋工程數字化資產管理。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章