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