宋一淇,王佩瑜,常守明,符安邦
1 中国舰船研究设计中心,湖北武汉430064
2 武昌船舶重工有限责任公司,湖北武汉430060
三维设计作为提高船舶设计制造效率和质量的有效手段,以及作为数字样船及虚拟仿真技术的基础,正在被越来越广泛地应用于船舶的设计制造过程中。目前,国内许多设计院所、船厂都已在设计制造过程中应用了三维CAD/CAM 系统,如国外引进的CADDS5,TRIBON,FORAN,CATIA,以及国产的东欣、SB3DS 等[1]。
随着三维CAD/CAM 系统应用的推广和深入,对其数据利用的需求逐渐增多,利用的形式越来越多样化,而其系统本身的通用化功能往往难以满足用户对三维数据多样化及个性化利用的要求。同时,由于对底层数据结构的研究是进行二次开发的前提和基础,使得对三维CAD/CAM 系统底层数据结构的研究逐渐成为研究热点,而对船体结构底层数据的研究更是重中之重[2-4]。
FORAN 系统采用与Oracle 数据库高度集成的方式,使用Oracle 数据库全程管理其船舶三维模型。其数据表数量众多,结构复杂。但其Oracle数据库完全向用户开放,为对其底层数据结构的研究和开发利用提供了可能。
FORAN 系统是由西班牙SENER 集团开发,专门用于船舶与海洋工程设计制造的三维软件系统。该系统在全球应用广泛,自2005年进入中国市场后,也得到了成功的应用[5-7]。
FORAN 系统涵盖了总体、船体、舾装、电气、舱室布置等各专业的三维设计功能,可用于船舶的概念设计、初步设计、详细设计、生产设计等各个设计环节[8]。
该系统各专业之间的设计相对独立,每个专业均由多个模块构成,功能全面,且随着版本的升级,其模块功能不断完善,模块数量也相应增加。其中,船体结构专业主要由6 个模块组成(V60R3.0 版),其关系如图1 所示。
图1 船体专业各模块之间的关系Fig.1 The relationship between hull subsystem modules
从图中可以看出,由FHULL 模块创建的船体结构三维模型直接存储至Oracle 数据库中,作为其他船体专业模块的数据来源。
本文即针对FORAN 系统Oracle 数据库中由FHULL 模块创建的三维模型的数据结构展开研究,为三维数据的深度利用提供基础及条件。
船体结构三维建模主要在FHULL 模块中进行。而其基础库的创建则是在NORM 模块中完成,如材料库、型材库、板材库、肘板库、各类孔库、端部削斜库、贯穿切口及补板库、剖口库等。此外,FHULL 模块中Block 的定义也是在NORM 模块中进行。
FHULL 模块分为Shell and decks(曲面模式)和Internal structure(平面模式)两种建模方式[9]。其中:Shell and decks 用于外板、甲板等曲面形式的板架结构的建模;Internal structure 用于船体所有平直形式板架结构的建模。FHULL 模块的建模流程如图2 所示。
图2 FHULL 模块建模流程Fig.2 Modeling process of FHULL
从图中可以看出,FHULL 模块建模的主要内容为各类板和骨材等实体模型,以及表示结构层次关系的非实体模型,如Section(承载结构建模的平面)、Strutural element(结构平直分段)、Zone(船体曲面分段)等。此外,Block(船体立体分段)和Surface(船体曲面)也对表征结构层次关系至关重要,但前者是在NORM 模块中进行定义,后者则是在总体型线中进行定义。
不同于基于结构树式的模型管理模式,FORAN系统采用的是基于特征的模型管理模式,其模型的层次关系反映在模型的属性中,即将模型所属的Block,Section,Structural element,Surface 和Zone 等作为属性附加给模型。这些表征结构层次关系的属性与表征模型本身特征的属性,如名称、材料、规格、位置等,一起构成了结构底层数据。
因此,对结构底层数据的研究实质上是对结构模型各种属性在Oracle 数据库中存储方式及其相互关系的研究。
FORAN 系统Oracle 数据库中与结构相关的数据表多达数十张,其中与FHULL 相关的也有二十余张。这些表主要可分为基础信息表和各类结构件的属性信息表两类。其中:基础信息表包含了建模所需的标准板/型材、开孔、材料以及Block等通用信息,这些信息通过表之间的关联关系供其他数据表引用;各类结构件的属性信息表既包含模型的名称、几何信息、重量重心等直接反映模型特征的属性信息,也包含材料和Block 的Oid(对象标识)等与基础信息表相关联的信息。此外,还有反映结构节点层次关系的数据表。
对于上述数据表,其中基础信息表多由NORM 模块进行定义,但其是FHULL 建模的基础,是分析结构数据关系不可或缺的部分。而各类结构件的属性信息表中,受设计深度的影响,部分表可能为空。而且,其中如表示结构件几何形状及其与辅助线之间关系的数据表等与数据的深度利用关系不大。此外,各类结构件的属性信息表中的属性信息还有不同程度的重复。因此,研究结构底层数据结构的关键就在于对与FHULL模块所建模型密切相关的表进行分析。
通过使用FHULL 模块的两种模式进行板和骨材的相关建模操作,同时结合SQL 语句监测数据库的变化情况,进而分析表的变化与模型的关联关系。经过对表的内容进行初步分析,确定了其中与结构层次关系及结构特征属性密切相关的表,如表1 所示。
表1 船体结构主要相关表Tab.1 Main datasheets related to hull structure
对数据表内容的分析是基于底层数据进行二次开发的基础。其分析的内容包含表中字段本身的意义,以及字段的值所代表的具体含义。
通常,大多数字段的名称就直接反映了字段所代表的含义,如字段Density 即代表密度。而对于无法从名称中分析其含义的字段,则要结合对字段值的具体分析确定其含义。
对于字段的值,根据其自身体现数据含义的直接程度,主要可分为3 类:第1 类是可以直接反映数据含义的值,如描述信息、名称等,这类值有的是设计者的输入信息,有的是根据设计者设定的规则创建或是根据输入数据自动计算所得,数据具有实际的意义,可直接明了地体现出值的含义;第2 类是与其他表相关联的值,如字段Block_oid,Material_oid 的值等,这类值多是由数据表自动生成的各种Oid,数据本身并无实际含义,需要通过该值从其关联的表中解读出其含义;第3 类是间接反映结构特征的值,如字段Part_type,Symmetry 的值等,这类值由系统定义,设计者不可更改,一般为一组特定值,并与用户建模的某些操作相对应。例如,用户在曲面模式下创建一块板,系统就会将其相应表中字段Part_type 的值设为9。这类字段较少,但却是字段值分析的难点,也是分析的重点。
本节将通过建模操作对数据表的字段及值进行正向分析,同时结合使用具体的字段值逆向验证相关模型等方法,得到表1 中数据表内容的详细分析结果。
1)基础信息表。
基础信息表有3 张,其内容分析的结果如表2所示。其中,表Std_profile 为型材库对应的数据表。除表2 中所述的截面和材料相关字段外,还有表示库存的字段,可供每种型材定义最多4 种不同长度规格的库存相关信息。表Block,Material分别为定义立体分段和钢材材料所对应的数据表。
2)结构属性信息表。
结构属性信息表有5 张。其中:Prd_part,Prd_expl_part 和Inp_single_part_db 包含了所有板和骨材的相关属性信息;而Inp_plate_att_db 和Prd_plate_att 则仅包含板的相关属性信息。其内容分析的结果如表3 所示。
表Inp_single_part_db 中字段数量较多,一部分为板和骨材通用的字段,还有一部分是仅属于其中一者的字段。其中:字段Area,Thick 为板特有的;而Length,Kse_oid 则为骨材特有的。例如,在板的记录条中,字段Area,Thick 的值不为0,而Length 的值为0,同时Kse_oid 的值为空。反之,在骨材的记录条中,字段Area,Thick 的值为0,而Length 和Kse_oid 的值不为0。
表2 基础信息表的主要字段说明Tab.2 The description of main fields in datasheets of basic information
表3 属性信息表的主要字段说明Tab.3 The description of main fields in datasheets of structure attributes
一般而言,板和骨材的命名会依据一定的规则自动生成,如板以“P***”命名,而骨材则以“L***”命名等,其是区分构建类型的最直观的依据。但是,在某些特殊情况下,会出现全部以数字命名的结构件,造成无法区分结构的类型。因此,上述字段就成为了该数据表中区别记录条所表示的结构类型的准确依据。
3)节点层次关系表。
表Bs_design_node 记录了整个设计树的层次关系,其字段及含义如表4 所示。
表4 表Bs_design_node 字段说明Tab.4 The description of fields in Bs_design_node
该表通过Oid 和Parent_node 两个字段来组织所有模型的层次关系。如图3 所示,“Oid=3001”表示的是Design tree(设计树),其子节点有4 个,分别为Structure,Outfitting,Accommodation 和Structure outfitting。其中,Structure 下还有子节点Structural elements 等。据此,可以理清整个模型的层次关系。对于FORAN 系统来说,由于其基于特征的模型管理模式,还可依据模型的Block,Surface 和Zone 等属性信息建立模型层次关系。
显然,该表包括了结构、设备、舾装、铁舾件在内的所有模型的层次关系。而字段Model_oid 实际上表示的是结构模型的标识码。因此,对于其他专业的模型该字段的值为空。
从前文对表内容的分析中,可以看出有些表类型相同,其字段有不同程度的重复。而进一步对其记录条数进行分析,发现这些同类表的记录条数也不相同。这说明其记录的结构件的范围和方式有差别。因此,对同类表差异性的分析就显得尤为重要。
图3 表Bs_design_node 的部分信息Fig.3 Part of Bs_design_node
对于Prd_part,Prd_expl_part 和Inp_single_part_db等3张表,其记录的对象都是板和骨材。但是,Prd_part 和Prd_expl_part 不仅包含FHULL 模块创建的板和骨材,也包含Structure outfitting(铁舾件)模块创建的板和骨材。而Inp_single_part_db则只包含前者。此外,对于在FHULL 中采用对称方式创建的板或骨材,在Prd_part 中仅为1 条记录,而其余2 张表则分开记录。
对于表Inp_plate_att_db 和Prd_plate_att,都表示板的属性信息,但前者记录的是采用Internal structure 模式创建的板的相关数据,后者则记录Shell and decks 模式下创建的板的相关数据。
由于用户对数据需求的多样性,单张数据表所含内容往往不能涵盖所有需求,通常需要从多张数据表中提取信息。因此,表的关联关系的分析是基于底层数据进行二次开发的关键。船体结构主要表之间的关联关系如图4 所示。
从图中可以看出,属性表、基础表以及不同属性表之间都是通过各种Oid 关联在一起。例如,如果要找出表Inp_single_part 中某条记录所对应骨材的截面类型,则可通过关联关系Inp_single_part.kse_oid=Std_profile.oid 找到表Std_profile 中 相应的记录条,读取所需的截面信息。
图4 船体结构主要表之间的关联关系Fig.4 The relationship of main datasheets of hull structure
根据前文的分析,表Inp_single_part_db 仅包含FHULL 模块所创建的结构件的属性信息,并且属性信息较多。因此,可将该表作为结构件材料属性分析的主表,即从该表出发解析出每条记录对应结构件的材料属性。其分析的思路和方法如图5 所示。
图5 材料属性分析方法Fig.5 The analysis method of material attributes
根据3.3 节表差异性分析的结果,选择表Inp_single_part_db 的字段Kse_oid 作为判断结构件类型的依据。首先,对该值进行判断,即如果其值为空,则说明该记录条表示的是板的数据;反之,则表示的是骨材的数据。然后,根据判断的结果,分别分析骨材和板的材料属性。
1)骨材材料属性的分析。
首先,通过表Inp_single_part_db 和表Std_pro⁃file 之间的关联关系,查找到Std_profile.materi⁃al_oid;再通过表Std_profile 和表Material之间的关联关系,查找到Material.code,该字段的值即为材料属性。
关联关系:
Inp_single_part_db.kse_oid=Std_profile.oid
Std_profile.material_oid=Material.oid
2)板材料属性的分析。
根据前文的分析结果,板因在FHULL 模块中创建模式的不同,其Material_oid 分别存储在表Prd_plate_att 和Inp_plate_att_db 中。因此,先要对Inp_single_part_db.part_type 的值进行判断,其值为9,说明该板是在Shell and decks 模式下创建;反之,则说明板是在Internal structure 模式下创建。
(1)对于在Shell and decks 模式下创建的板,先通过表Inp_single_part_db 和表Prd_plate_att 之间的关联关系查找到Prd_plate_att.material_oid,然后通过表Prd_plate_att 和表Material 之间的关联关系查找到Material.code,获取板的材料属性。
其关联关系为:
Inp_single_part_db.prd_part_oid=
Prd_plate_att.prd_part_oid
Prd_plate_att.material_oid=Material.oid。
(2)对于在Internal structure 模式下创建的板,先通过表 Inp_single_part_db 和 表Inp_plate_att_db 之间的关联关系查找到Inp_plate_att_db.material_oid,然后通过表Inp_plate_att_db 和表Material 之间的关联关系查找到Material.code,获取板的材料属性。
其关联关系为:
Inp_single_part_db.prd_part_oid=
Inp_plate_att_db.inp_part_oid
Inp_plate_att_db.material_oid=Material.oid。
至此,便可分析出所有骨材和板的材料属性。
根据对FORAN 系统FHULL 模块船舶结构相关数据表的分析结果,参考材料属性的分析方法,可以解析出结构模型所有重要的属性信息。基于这些数据,可以进行结构重量重心、材料需求等的统计汇总,甚至可以通过结构的重心和空间位置统计出结构的重量分布。这些需求和用途是超出软件本身功能之外的。
此外,在HULL 模块中,结构件有时会出现异常错误,造成模型无法读取,且无法从用户界面进行错误处理。结合结构底层数据的分析结果,可以确定跟实体结构件密切相关的表,以及他们之间的关联关系,基于此,可以直接从数据库对发生异常错误的结构件进行处理。
因此,对结构底层数据的研究结果是基于结构数据进行二次开发以及对数据进行深度利用的基础和前提。同时,对结构底层数据的研究思路和方法可为其他专业模块底层数据的研究提供有益参考。
[1]苏文荣,陈锦晨,郑斌华.三维CAD 技术在船舶设计中的应用[J].上海船舶运输科学研究所学报,2007,30(2):144-149.SU Wenrong,CHEN Jinchen,ZHENG Binhua. Appli⁃cation of 3D CAD technology in ship design[J]. Jour⁃nal of SSSRI,2007,30(2):144-149.
[2]倪海参,汪学锋.从CATIA 到TRIBON 的板架结构数据转换方法[J].中国舰船研究,2012,7(5):66-70.NI Haishen,WANG Xuefeng. Data transformation from CATIA to TRIBON for naval ships[J]. Chinese Journal of Ship Research,2012,7(5):66-70.
[3]贾琪琳. TRIBON 的船体分段数据分析[J]. 船舶工程,2010,32(增刊1):67-69.JIA Qilin. Data analysis of ship segments by TRIBON[J].Ship Engineering,2010,32(Supp 1):67-69.
[4]苗贇,汪学锋. 船舶主流CAD 软件间的数据交换研究[J].中国造船,2011,52(3):190-197.MIAO Yun,WANG Xuefeng. Research on data trans⁃formation between principal ship CAD softwares[J].Shipbuilding of China,2011,52(3):190-197.
[5]张凯,谢承福,涂跃红,等. FORAN 软件在船舶总体设计中的应用[J]. 中国舰船研究,2009,4(4):76-80.ZHANG Kai,XIE Chengfu,TU Yuehong,et al. Appli⁃cation of Foran to the general design for ships[J]. Chi⁃nese Journal of Ship Research,2009,4(4):76-80.
[6]林锐,卢永进,房玉吉,等. Foran 软件在轮机设计中的应用[J].机械,2011,38(8):27-29.LIN Rui,LU Yongjin,FANG Yuji,et al. Application of the Foran software on the engineer design[J]. Machin⁃ery,2011,38(8):27-29.
[7]卢永进,华志刚. 基于FORAN 的船舶管路三维设计研究[J].船海工程,2012,41(5):77-80.LU Yongjin,HUA Zhigang. Study on the 3D ship pip⁃ing design based on FORAN[J]. Ship & Ocean Engi⁃neering,2012,41(5):77-80.
[8]陈宁.FORAN 在船舶数字化设计全流程中应用技术研究[J]. 造船技术,2009(4):34-38.
[9]李军,李樱,罗白璐.基于FORAN 的结构模型管理方法[J].船舶标准化工程师,2012(1):28-31.