APP下载

基于二维布置图的三维舱室自动建模技术

2021-08-31黄卫刚林科

中国舰船研究 2021年4期
关键词:舱室边界建模

黄卫刚,林科

中国舰船研究设计中心,湖北 武汉 430064

0 引 言

舰船总体设计目前正值二维设计和三维设计重叠的阶段。其中,二维设计对象是甲板分层布置图,图中包含舱室边界、舱室名称等信息。根据这些信息可确定舱室之间的相邻关系以及舱室面积容积等关键信息,对总体设计而言具有重要的影响[1],确定甲板分层图中的信息将为舰船舱室容积面积统计以及不沉性等性能计算分析奠定基础。基于二维图纸自动构建的舰船三维舱室布置模型将为三维设计提供基础对象,是三维总体设计的基础。如何实现二维图纸向三维模型方向的转换是目前工程中需要解决的一个问题。

现阶段总体方案三维设计领域的主要研究方向集中在船舶设计的软件化和智能化。例如:Kowalski 等[2]开发了基于船舶设计方法和程序的知识库,辅助控制设备的船舶自动控制系统;Kang 等[3]利用C 语言对三维设计软件CADDSS进行了二次开发,研制了船舶管路自动布置设计的智能船舶CAD 系统;李俊华等[4]应用专家系统原理,开发了可进行船舶舱室三维优化的计算机系统;蔡乾亚等[5]研究开发了集装箱船稳性计算及中横剖面结构设计的计算机系统;Michalek 等[6]开发了一套人机交互建筑布置优化软件,允许用户根据初始输入数据生成可行方案,然后根据设计者个人意图对可行方案进行改造,如此反复后得出最优布局结果;Michalek 等[7]首先将户型优化问题用网格进行离散,变为整数规划问题,采用人机交互的方法,结合整数规划方法和专家系统在户型优化设计中的应用,设计人员可动态地修改机器解后再进行迭代;张涛等[8]应用公理化设计原理及基于知识工程的模块化机理有效探索了大型邮轮的布置设计规律。

由于设计历史数据是二维图纸,舰船设计人员仍习惯绘制二维图纸。因此,面向三维设计,需要基于二维图纸转化为三维设计的方案。机器学习等人工智能技术在总体设计中的应用需要积累大量基础数据集,目前这些数据集仍主要以二维图纸的形式存在,如何实现二维布置图智能识别及三维模型的自动构建和数据化,是目前舰船智能设计亟待解决的一个问题。

本文针对上述问题,将提出一种基于总布置图信息自动建模舱室三维模型的技术,实现舱室信息的自动分析、建模等功能,为针对二维布置信息实现数据自动提取提供技术条件。

1 总体框架

基于二维总布置信息的三维舱室自动建模技术的主要思路为:首先,采用数据分析技术提取AutoCAD 二维分层布置图中的舱室边界、名称、编号等信息,建立二维舱室的图元;然后,根据舱室的上、下二维图元之间的对应关系自动构建舱室三维图元;最后,形成针对三维软件的数据接口,实现数据的有效输出(图1)。基于该技术开发了相应的软件,包括二维舱室边界识别、二维舱室属性识别、三维舱室建模和数据输出等功能。

图1 软件基本流程Fig. 1 Basic sofware process

2 二维舱室边界识别

基于二维总布置信息的三维舱室自动建模是利用总布置图中的舱室边界、舱室名称及舱室编号三类信息构建三维舱室模型。开展工程设计时,在总布置图中通过不同图层表示不同的信息,如舱室边界、舱室名称及舱室编号分别位于3 个不同的图层。AutoCAD 二维分层布置图一般包括多种图层,舱室边界只含舱室的轮廓线(包括舷侧边界信息)。为方便分析,舱室名称、舱室编号需位于舱室轮廓范围内。考虑到项目的关注点,首先需过滤总布置图中包含的其他图层(本研究的无关信息),然后识别并处理舱室边界,对于需要识别的舱室边界线较多(线型包括了直线、多段线、圆弧甚至样条线),可以通过布尔运算的方式实现。

具体步骤如下:

1) 基于Parisolid 的输入接口导入AutoCAD格式的图纸文件。建立一个1 000×1 000 的四边形面域S,将所有舱室的边界线向该面域进行映射,容差定义为1×10-6。此时,所有舱室边界的延长线均变成了面域的边界线,面域之间的边界线将面域S打散成为数百个小碎面,如图2 所示。

图2 面域提取Fig. 2 Surface domain extraction

2) 提取面域所有碎面,去掉包含面域S边界的碎面,每个碎面包含了各自的边界线及内部硬线(自由边界)。

3) 解析碎面的边界拓扑。边界可识别为由一系列顺序排列的散点形成的封闭域,起点坐标等于终点坐标。遍历所有内部点(除起点和终点外),若坐标值相同,则该两点间的所有点构成了非边界的内部硬线。如图3 所示,第n点和n+2点坐标一致,则表明从n到n+2 形成了一条回归的内部硬线。

图3 自由边界处理Fig. 3 Free boundary processing

4) 若一条硬线上存在硬线分支,只需采用最小分支判断即可。判断i点和i+2 是否一致,若一致,i和i+1 就形成了一条单向的硬线。遍历时,找到所有分支的最顶部节点以及单向中间分支。

5) 基于干净的(即面域内无内部硬线)外轮廓建立新的面域Sj,并反向延伸所有最顶部节点,与所有单向中间分支一起映射到面域Si上,形成新的面域SI′。

6) 提取SI′的所有碎面,重新生成新的没有碎面的面域SI″,再从SI″中继续提取子面,此即为需要识别出的舱室边界。

在处理识别舱室边界的过程中,不可避免地会存在绘制不规范的问题。针对该问题,本文总结相关情况,给出了如表1 所示解决方案。

表1 舱室边界绘制不规范问题处理表Table 1 The non-standard problems of tank boundary

3 二维舱室属性识别

确定了舱室边界后,需要识别每一个舱室的属性(包含舱室编号、舱室名称)。AutoCAD 二维图纸中,舱室编号及名称通过舱室区域内的文本形式显示。考虑到本文研究目标之一是实现二维布置状态和三维设计方案之间的自动转化,提出采用Parasolid 内核tag 属性(特有的)辅助关联舱室及其对应的属性,tag 方式可实现属性的快速匹配,经几千个面域的测试,可在1 s 内完成属性匹配。

为实现二维舱室属性识别算法,本研究引入以下内容:

1) 舱室流水号:将舱室从1 开始编号,顺序实现舱室的逐次处理,以便处理舱室。

2) 点流水号:描述与舱室流水号对应的舱室编号所在位置,从1 开始排序。

具体算法如下:

1) 识别顶部和底部舱室区域属性。针对每个舱室申明1 个二维的tag 属性,并赋予舱室流水号。面1 增加1 个tag 属性1。同时,组合所有识别出来的舱室形成面域S(无布尔运算操作,仅简单合并为一个几何体)。针对舱室编号的位置创建散点对象,并将散点对象申明零维的tag 属性,同时赋予点流水号。散点1 和2 分别赋予了零维tag 属性1 和2。将所有的散点映射到组合面上,形成包含一系列硬点的面域S′。至此,散点1 和2 映射至面1 上(图4)。布尔等操作下tag属性除刻意覆盖外,均具有属性不变性。即经过几何布尔、切分等操作后,点、线、面、体的tag 属性信息仍为初始几何对应维度的tag 信息。属性不变性意味着可方便地追溯到Si’原始舱室和对应的编号。图4 映射后形成的新面包含6 个顶点,其中1~4 边界点属于原始四边形的顶点,并未标注任何零维信息,5 和6 点对应原来的散点1 和2(即舱室编号和舱室名称)。

图4 舱室属性识别Fig. 4 Cabin property identification

2) 提取S′的所有子面Si′,依次处理直到实现舱室名称与舱室边界逐一对应。

3) 划分舱室的子舱。对舱室的轮廓点进行x向排序,并在每个中间站位增加一条硬线,将舱室打断成子舱。如图5 所示,图中的多边形舱室通过2 根硬线打断成了3 个四边形区域,这3 个区域就是3 个子舱。

图5 舱室分割Fig. 5 Compartment segmentation

4) 对顶部、底部相同舱室编号的舱室进行匹配处理。为了实现映射匹配,需要对子舱及其顶点进行排序。子舱的创建是基于x方向分割实现的,x向分段编号依次为1,2,3,···,取子舱的形心位置y,取d=x+y/1 000。对所有子舱基于d值的大 小 进 行 排 序(1 000 表 示 船 宽 不 超 过1 000 m,y/1 000<1)。如图6 所示,实现了在xy平面上的排序。

图6 舱室顶点xy 平面排序Fig. 6 Cabin vertex sorting on xy plane

对子舱顶点排序,判别式为d=x+y/1 000,四边形子舱由点1,2,4 和3 组成,三角形子舱由点1~3 组成(图7)。

图7 舱室顶点的排序示意图Fig. 7 Cabin vertex sorting

两次排序后,就可以进行顶部、底部子舱的映射判断。图8 中4 和3 代表相应子舱的构成是四边形还是三角形。子舱信息采用多段线的方式描述子舱截面,图中节点编号为空表示舱室编号缺失,一般为图纸中存在的问题区域。

图8 子拓扑面检查Fig. 8 Checking sub-topology

4 三维舱室建模

基于修正后的舱室数据和船体外形构建三维舱室模型,便于后续的舱室修正及舱室肋骨型值的输出,为不沉性计算等提供信息。三维舱室建模基于parasolid 内核的自研程序完成。

基于parasolid 内核的三维舱室建模输入信息包括以下内容。

1) 扩大边界的甲板信息,单层甲板信息格式如表2 所示。

表2 单层甲板信息及格式Table 2 Single deck information and format

2) 与甲板对应的扩大边界的舱室信息。格式如下,舱室名称、舱室上下面的二维边线信息(上下表面均为四边形,各边均允许为样条线,每一个括号内为一条边线的控制点)。如表3 所示。

表3 扩大边界的舱室信息及格式Table 3 Cabin information and format of the expanded boundary

基于parasolid 内核的三维舱室建模程序算法流程如下:

1) 基于舱室上、下面的二维信息及上、下甲板高度,构建舱室的六面体实体模型(如图9 中阴影实体);

图9 三维舱室实体模型自动建模Fig. 9 Automatic physical modeling of 3D cabin

2) 计算六面体实体的包围盒,搜索外形面与该包围盒干涉的子面,与该六面体完成修剪操作,修剪点x的坐标取船舯x,y坐标为0,z坐标为100。修剪后的实体即为舱室实体(图10)。

图10 三维舱室自动建模(横剖图)Fig. 10 Automatic modeling of 3D cabin (cross section)

通过网格填充相邻截面的方式生成的船体外形,在球鼻艏处和艉轴孔处是不封闭的。当舱室部分区域与这两处存在交集时,无法通过修剪操作获得正确的舱室边界,可先将中纵剖线双向拉升成如图11 所示的修剪面。利用该修剪面修剪一次六面体子舱,然后再利用船体外形进行舱室修剪即可。

图11 三维舱室自动建模(修减面)Fig. 11 Automatic modeling of 3D cabin (tailoring section)

利用网格面做船体外形进行布尔运算,每个截面大概有近200 个型值点,而复杂船型又有数百个截面,因此参与布尔运算的网格面可能达到四、五万个。如布尔运算模型不进行优化,生成一个舱室就需要数秒钟,数千个舱室的生成往往需要较长时间,这种速度很难满足工程需求。这里采用外形和舱室分级处理的布尔方式提升舱室实体的计算效率(图12)。

图12 分级布尔运算Fig. 12 Hierarchical Boolean operation

5 三维舱室截面型值输出

若要利用现有的静力性能计算软件、不沉性计算软件,则需输入舱室外形。本研究恰恰可以提供舱室外形。鉴于上述软件一般利用肋骨线描述舱室形状,因此,基于二维总布置信息的三维舱室自动建模技术还需要实现三维舱室截面型值的输出,可为其他计算软件提供输入(图13)。修正完成的三维舱室,可以通过布尔运算直接截出二维的子舱截面,并根据需要自行加密(图14)。

图13 三维舱室型值输出Fig. 13 Output results of 3D compartment offset

图14 多段线描述子舱截面输出Fig. 14 Section output of multi-segment description sub-cabin

6 三维舱室应用案例说明

1) 基于三维舱室的数据输出。

基于该系统实现了三维舱室的数据输出,如图15~图16 所示。

图15 三维舱室建模数据输出Fig. 15 Data output of 3D cabin modeling

图16 三维舱室局部图Fig. 16 Local view of 3D cabin modeling

2) 舱室数据的查询及数据管理。

舱室数目众多,进行属性定义的工作量非常繁重,极易出错,针对这个问题,提供了查询和批量处理功能(图17)。

图17 舱室属性处理Fig. 17 Treatment of cabin attributes

7 结 语

本文提出一种基于二维总布置图信息的三维舱室自动建模技术,实现布置信息的自动收集和分析功能,具有以下用途:

1) 适应人工智能及智能设计的需求,方便实现大量总体方案的数据快速分析及建模,为采用智能算法进行方案评估及优化创造了一种新的技术途径;

2) 适应二维甲板分层布置图和三维设计方案之间的数据自动交互功能,为三维舱室建模提供了快捷的数据转化渠道;

3) 自动数据收集功能可为总体设计中的舱室容积分析、不沉性计算等提供预处理数据,从而能够有效提高计算及设计效率,并提升设计质量。

依据本方法开发的软件通过软件测试验证了该技术的可行性和良好效果,可简化相关总体设计工作的工作量,有效提高设计中相关工作的计算效率和设计效率,为总体方案的智能设计等提供样本数据。

猜你喜欢

舱室边界建模
舱门振动对舱室噪声特性影响研究
守住你的边界
物理建模在教与学实践中的应用
在经历中发现在探究中建模
舰炮弹药连续内爆对舱室毁伤效应的仿真分析
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
“新永安”号客滚船整体舱室空调系统设计
求距求值方程建模
有边界和无边界
OF MALLS AND MUSEUMS