Tribon图纸中Symbols符号的解析

Tribon图纸中Symbols符号的解析

By eattonton

 

摘要:Symbols符号库作为Tribon图纸的重要组成,是构成快速便捷的Tribon出图系统的重要组成部分。Symbols库作为单独的sbs格式文件保存,也引起了我们的兴趣。希望通过存储文件的研究,深度的挖掘Tribon系统所未公开的信息。也为学习和借鉴符号库设计提供帮助。

 

关键词:Tribon,Symbol

 

1.      概述

Tribon系统有着完善的出图系统,在一份图纸中包含线型,文字,还有符号,这篇文字讲解如何解析Tribon中的符号解决方案。符号(Symbols)可以被定义一次,然后很容易地放置在图上。相关的符号构成一组符号类型。每一种类型被一个唯一的数字标识。Tribon提供了许多系统使用以及可以用户自定的符号,这些符号可以被用于图面上,但是无法被修改。对于开发的人员来说,符号在图面上的几何信息也是不能被读取的。

1.1  Symbols的创建/修改

开打Tribon的Planar Hull模块可以在Tools->Symbol菜单中创建和修改Symbol的功能。Symbol是被创建在一个511x511大小范围的几何图形,这些几何图形可以是直线,圆弧,圆。在Tribon中还有为Symbol提供了可用户自定义的自动碰靠定位的属性,Connection Point 和Text Connection Point。其中Connection Point通过设置不同的值可以被 系统识别为不同的碰靠方式,Text Connection Text定义Symbol的开始位置。这个具体的参数设置可以看Tribon document,这里就不赘述了。

1.2  Symbols的保存

Symbol图纸按照FONTSYMB的格式保存,其中symbol number表示的是Symbol的序号,font number表示Symbol在那个包中。

Tribon图纸中Symbols符号的解析_第1张图片

而Symbols的存储文件是在环境变量SBB_SYMBDIR所指目录下的d012sy.sbs,其中就是上面说的font number,其范围为1至999。Symbols所包含的信息都存储在这些文件中,在配置工程时,可以直接复制拷贝。但是如果这些文字丢失,图面上所用的符号也就丢失了。

 

2.      TWSymbolLib库的类

TWSymbolLib函数库是专门为读取Symbols存储文件中的Symbol而设计。下面将介绍一下TWSymbolLib中一些关键的类。

2.1  CSymbolSBS类

此类记录了某一个d012sy.sbs文件,这个类中有FontID=属性和包含Symbol数量的Count属性,考虑到我们主要是访问其中的几何信息,下面提供了以下几种方法:

bool HasValid(int SymbNo) : 判断此symbol number是否有效,如果有效范围true;

CSymbol GetSymbolAt(int SymbNo):返回一个CSymbol对象,如果没有就返回一个null值;

Bitmap GetSymbolImageAt(intSymbNo):返回一个511x511大小的图像,如果没有就返回一个null值;

string GetJson():范围整个文档的json格式,json格式广泛用于网络数据之间的传输,可以把读取的数据很方便的用于网络;

2.2  CSymbol类

CSymbol类记录了某个Symbol符号,这里有一个符号的所有信息(geometry,Connection Point和Text Connection Point),这里我们先提供了geometry信息。

Int SymbolID属性表示symbol number;

Int Count属性表示包含几何体得数量;

List geos属性表示所包含的几何对象,可以是直线,弧线或者圆;

Bitmap GetImage():此方法返回一个511x511大小的图像,如果为空就范围一个null值;

string GetJson():获得单个symbol符号的json格式

2.3  CSymbolGeo类

CSymbolGeo此类记录了Symbol中的一个线段,可以是直线,圆弧或者圆。

List pts属性就记录了此线段所包含的点

2.4   CSymbolPoint类

CSymbolPoint此类记录了一个线段所在的具体位置,

Type属性表示此点的性质,0表示直线,1表示圆弧,2表示圆

Amp属性表示圆弧的凸度或者圆的半径

X属性表示水平方向数值

Y属性表示竖直方向的数值

 

3       TWSymbolLib使用实例

TWSymbolLib函数库为外部访问Symbol提供了可能,下面通过一个实例来讲解如何通过此库解析一个Tribon项目的Symbol符号。

3.1  Symbol文件地址

通过TBEnvironment的get_Variable函数获得SBB_SYMBDIR环境值的Symbol存储目录。通过扫描此地址空间中的d012sy.sbs文件,就可以获得Symbol文件地址。

3.2  实例化一个CSymbolSBS对象

通过new CSymbolSBS(Symbol文件地址)可以实例化一个Symbol库对象,此时CSymbolSBS的FontID被计算出来,如果格式不对FontID就被设置为-1。

 

3.3  CSymbolSBS的Load()函数

Load()函数是真正的解析此Symbol文件,并生成一个CSymbol列表。在此基础上就可以很轻松的访问Symbol里面的几何数据了。

3.4  界面设计

下面就是一个WinForm程序的截图,左侧就是sbs文件的列表,右边就是选择的sbs文件所包含的Symbols。

Tribon图纸中Symbols符号的解析_第2张图片

 

4       小结

Symbols是图纸的重要组成部分,在图面上往往无法直接访问到Symbol里面所包含的几何信息。而通过TWSymbolLib这个库就可以很方便的读取里面的几何信息。Tribon 中的Symbol除了在图纸中使用,还可以使用在水尺放样中。通过这种读取技术,也为外部开发水尺放样提供了方法。

Tribon作为一个成熟的船舶设计软件,我们除了熟练的使用他之外,也要学习它的设计思路,包括算法的设计和程序的设计。基于Tribon这个平台成千上万的船舶被成功设计和建造,这说明Tribon本身就是一个伟大的系统工程,而不是简单的一个软件工具。我们国内缺少这样的行业专家级得软件作品,在这里通过深入的解析 Tribon,也为今后能够开发出更高水平的专家级软件作出一点点的努力。

 

 TWSymbolLib的下载地址

 

 

 

 

 

你可能感兴趣的:(Tribon)