AVEVA Marine圖紙文件(SDB)的解析

AVEVA Marine圖紙文件(SDB)的解析

By Eattonton

1.      寫在前言前

前段時間一直在寫Tribon方面的開發。實際上本人是AM(AVEVA Marine)的用戶。上次遇到AVEVA的王工程師,在互相交流之後,他想能不能給寫一篇介紹AM圖紙文件分析的文章。我想隨着AM的用戶增多,船業對AM感興趣的朋友也會多起來,就把這塊的分析結果以文章的形式記錄下來,可以更好的分享給有興趣的朋友一起交流,這也是一件很愉快的事情。並且,我手上的項目遇到詳圖大量修改,並無終版定下來。所以,間隙有些時間就寫這篇文章。下面從AM的圖紙存儲方式,分析SDB文件的結構,自己編寫的解析庫說明。這三個方面進行簡單的說明。

2.      前言

AM是AVEVA PDMS和Tribon軟件的結合,Tribon作爲船人都知道是船廠生產設計的必備工具,也是做的最成功的船舶設計系統,Tribon在船人心目中的地位是難以取代的。在2000年左右開始在國內興起的時候,多少人拿這個廢寢忘食,在電腦上三維船造出來,再把萬噸巨輪造出來,其中的過程確實很有享受。PDMS在其他領域尤其是電力,石油的管道建模方面很專長,這方面船人接觸的就少些了。後來就是AVEVA把Tribon收購了,就有了AVEVA Marine(簡稱AM),Tribon也就停止了更新。

大概從2005年開始到現在,AM經歷了很多大大小小的不同版本。但是,Tribon船體建模方面的方式還是保留。其中,就有出圖方面的沿襲。在出圖時的剖圖,標準,甚至Vitesse的KCS_Drafting庫都是在AM支持的。所以,Tribon用戶尤其是船體專業,是很容易轉用AM用戶。

       使用上AM與Tribon相通,但是,在數據存儲和工程配置方面出現了很大的不同。其中包括圖紙的存儲的改變。這篇文件將詳細講解AM的圖紙存儲。

3.      AM的圖紙存儲

AM的圖紙系統由兩部分組成,索引庫和文件庫。其中索引庫是存儲在AM數據庫(數據庫叫DABACON)裏面,索引的作用是指向文件庫的位置。文件庫是存儲圖紙的文件,以.SDB文件結尾。這樣的好處是索引好圖紙分開,有效降低了圖紙數據庫的存儲壓力。如果朋友是Tribon的系統管理員,Tribon的圖紙庫經常滿,需要新建不少子工程。而AM在這方面就可以把所有圖紙放在一個數據庫裏面。而且,圖紙可以做到回滾幾次(Rollback)。

圖紙文件存儲在項目文檔中,以(工程名)drg的文件夾命名。也可以通過圖紙索引庫中的DOFIL屬性,讀取圖紙文件的指向。

4.      SDB文件解析

圖紙文件以SDB文件類型存儲,文檔內存儲了圖面上面的幾何信息,文字信息,視圖信息等。正是這些信息組成了一張完整的設計圖紙。在說明SDB文件的結構之前,看一下Drawing Explorer裏面的圖紙結構。


整個文檔以樹(Tree)型數據結構的方式存儲。抽象一下圖紙結構應該如下圖:


一個圖形的分級結構是分成3個子圖層級。這些層級存在於所有圖形中,而所有幾何圖形總是位於子圖的第3層級(元件Component)。子圖結構可以被用戶自由地創建和重新佈置。也就是說一個子圖就是一個單元,按照對象化程序設計,就是一個對象。

4.1  View節點

樹形結構的圖紙層次清晰,很方便程序的編寫。View節點即視圖第1層,在該節點包含了視圖名稱,視圖所包含子視圖的指針等信息。

4.2  SubView節點

SubView節點即視圖第2層,在該節點包含了子視圖名稱,子視圖所包含元素的指針等信息。

4.3  Component節點

Component即元件,是圖紙底層的節點。這個節點主要包含線型和文字。

4.3.1       線型

線型Contour按照多斷線Polyline的方式存儲。裏面包括控制點數量,起始點,其他控制點等信息。

4.3.2       文字

文字是圖面表達信息的主要元素。在該節點中包含了字體,文字位置,高度,文字內容等。這裏需要說明的是AM12.0和AM12.1中的文字結構還有一些區別。

5.      解析庫的使用

爲了更好的把設計的圖紙顯示在更多的平臺,尤其是缺少AM軟件的地方。出於學習的目的,編寫了SDB圖紙文件的解析庫(目前針對AM12.1的套料圖),即TAMDWGSDB121庫。

5.1  CViewView類

用於記錄第1層View的類,屬性和方法如下:

lst_contours 視圖中包含的線型列表

lst_text 視圖中包含的文字列表

ViewName 視圖層得名稱

List<_SDB_CONTOUR_>GetContourBySubviewName(string svName) 通過子視圖的名稱獲得子視圖的線型列表

5.2  CViewSubview類

子視圖的類,結構形式與CViewView類類似

5.3 CViewComponet類

元件類,這個類中包含了圖紙中包含的線型和文字。

5.4   CViewPatch類

記錄了CViewView類的集合

5.5   SDBLOAD類

此類中的List<CViewPatch> loadSDBFile(stringfilename)函數解析一個圖紙文件(SDB文件),並返回所包含的CViewView類。

5.6   SDBClass類

包含了線型和文字的集合類

5.7 其他

TAMDWGSDB121庫還提供了輸出成圖片的函數,以方便用戶使用。當然,也可以輸出成其它格式,或者顯示在其它的平臺。

5.8 實例

下面就是一個套料圖的圖形轉換結果。

 

6       小結

AM採用索引圖紙的方式存儲圖紙,圖紙文件採用成熟的Tree數據結構。這種成熟的程序設計思路使得程序運行更加的靈活。通過上面的解析和程序的實踐,基本掌握了AM中圖紙SDB文件的解析方式。其中還要注意的是圖紙中還有Symbol符號,這個Symbol符號需要單獨的解析,不在這篇文章中並未進行說明。想了解符號的朋友可以參考《Tribon圖紙中Symbols符號的解析》這篇文章。

       在此說明一下,我們解析SDB文件只是爲了出於學習的目的,並不是出於商業。有興趣的朋友可以email:[email protected]

 

 參考庫的下載

 

 

關鍵詞:Aveva Marine, PDMS, SDB,圖紙

 

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