AVEVA Marine图纸文件(SDB)的解析

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里面的图纸结构。

AVEVA Marine图纸文件(SDB)的解析的图1

整个文档以树(Tree)型数据结构的方式存储。抽象一下图纸结构应该如下图:

AVEVA Marine图纸文件(SDB)的解析的图2

一个图形的分级结构是分成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 实例

下面就是一个套料图的图形转换结果。

 AVEVA Marine图纸文件(SDB)的解析的图3

6       小结

AM采用索引图纸的方式存储图纸,图纸文件采用成熟的Tree数据结构。这种成熟的程序设计思路使得程序运行更加的灵活。通过上面的解析和程序的实践,基本掌握了AM中图纸SDB文件的解析方式。其中还要注意的是图纸中还有Symbol符号,这个Symbol符号需要单独的解析,不在这篇文章中并未进行说明。

————————————————

本文来自:CSDN博主「TriWeb_ton」

默认 最新
当前暂无评论,小编等你评论哦!
点赞 评论 收藏
关注