二维CAD图纸快速转换成MARS模型的程序实现
2019-05-06朱青淳曾文源
朱青淳 曾文源
(中国船舶及海洋工程设计研究院 上海200011)
引 言
船舶结构设计过程中,计算船体总纵强度时一般需多次计算各个典型横剖面的剖面模数:在设计阶段初期,首先勾勒出典型横剖面图的草图,此时构件尺寸是依据局部强度计算书取值[1];随后进行总纵强度校核,若不满足总强度要求,则调整纵向构件尺寸,使该剖面的剖面模数达到总强度规范要求,最终确定典型横剖面的方案。
BV船级社的MARS是一款建模操作简单、修改模型方便的规范校核软件,故经常用来辅助设计工作。它可以快速计算剖面积、剖面惯性矩、剖面模数等几何要素。工作中,我们先在CAD中画出二维横剖面图,依照图样在MARS中建模。若图纸需要修改,则在MARS中修改相应的参数(如板厚、骨材尺寸、开口位置等),计算新的剖面模数,重复此过程直到剖面模数满足设计要求。
舰船的典型横剖面外板线型较普通商船更为复杂。建商船模型时只需约5个节点就可以勾出外板线型,而舰船需要更多节点才能较准确描绘。若以二维图纸为输入条件,在MARS中建立舰船的模型也需花费一定时间。例如:在建立船体外板时,描绘外板的线型需要依次输入节点坐标。这些点的坐标需要从二维图纸中依次量取,工作繁琐且容易出错。
本文用VBA语言开发基于CAD二维图纸、辅助MARS建模的程序,只需在图纸上选择建模范围,就可以快速将构件信息导入至MARS模型中,稍作修改便可计算剖面模数,不仅节约建模时间,而且有效减少可能产生的人为错误,大大提高工作效率。
1 剖面模数简化计算原理和方法
1.1 惯性矩的定义
惯性矩是一个描述截面抵抗弯曲能力的几何量,如图1所示,任意形状截面对坐标轴的惯性矩如式(1)定义。
图1 面域惯性矩定义
船舯区域的船体剖面模数是衡量船体总纵强度的重要参数,其定义见式(2)[2]:
式中:Wd为甲板剖面模数,m3;Wb为船底剖面模数,m3;I为船舯剖面对其中和轴的惯性矩,m4;Zd为中和轴到强力甲板边线处的垂直距离,m;Zb为中和轴到平板龙骨上表面的(即基线)垂直距离,m。
1.2 计算方法讨论
计算剖面模数归根结底是将剖面各构件分别对剖面中和轴求惯性矩。惯性矩是一个积分量,故计算时需引入一些简化,骨材、纵绗、甲板、纵舱壁都可以准确计算,外板与横剖面(平行于YOZ的平面)的截交线为一条曲线,无法直接求出其惯性矩。现将该曲线分为若干小段,把每一段都看成一块矩形,便可分别求取惯性矩再相加。例如,在图2中,外板可分为OA、AB、BC、CD四段计算,每一段近似为以节点距离和板厚为长和宽的矩形。这是一个“以直线代曲线”的过程,计算结果的精度取决于曲线分割的段数。显然,分的段数越多结果越精确,但分得太细会提高计算代价,且对精度提高并无显著贡献。
图2 分段求曲线惯性矩
那么计算剖面模数时,一条曲线究竟分为多少段直线才合理?取一条典型的外板曲线,分别在MARS中用4种方式建立模型,如图3所示。方案a为程序根据曲线线型的变化自动匹配出节点数,具体的处理方法见1.3节;方案b仅在甲板处建立节点;方案c插入2倍于方案a的节点;方案d插入4倍于方案a的节点。
图3 横剖面典型外板曲线计算惯性矩的不同建模方案
分别计算各方案惯性矩,并将对比结果列于表1,其中的理论值可用CAD命令计算求得[3]。此例中,按方案a在MARS中建模,计算结果与理论值误差为0.1%,对设计的影响可忽略不计。
表1 惯性矩计算结果对比(平行舯体剖面)
方案c和方案d的惯性矩(精确至小数点后4位)以及中和轴高度(精确至小数点后3位)与方案a的数值相同;方案b和方案a相比,惯性矩和中和轴位置都有偏差。方案a建模足以保证精度,而方案c、方案d继续插入更多的节点,软件的计算结果不会影响计算精度。
图4 计算尾鳍外板线型惯性矩的不同建模方案
再举一外板线型凹凸变化明显的例子。横剖面的外板见图4,分别按照图4所示四种方案取节点数,并在MARS中计算惯性矩的结果,理论值用CAD命令计算,结果如表2所示。
表2 惯性矩计算结果对比(尾鳍剖面)
从图4中可以直观地看出,此例中曲线的曲率变化较复杂,方案c、方案d的节点数明显比方案a、方案b密集。由计算结果可知,方案a、方案c、方案d比前一例有了更明显的相对误差,但依然满足工程应用要求,从而方案a的节点选择优于方案c、方案d。而方案b的计算误差偏大,节点数量选取相对不合理。
1.3 CAD二维图纸中曲线处理
假设横剖面图中的甲板、外板都以多段线(pline)或直线绘制,获取其上节点的坐标就可以准确输出该线到MARS。事实上,图纸中的甲板多用直线或圆弧绘制,外板、内舷侧由样条曲线、圆弧、多段线绘制。MARS建模只接受节点的输入(不接受任何线型的输入),即1.2节中所述“以直线代曲线”的思想,用若干节点将曲线分割成小段计算剖面模数。因此,必须先将所有的圆弧或样条曲线转换成直线或多段线,提取其上节点的坐标后再输出(CAD中只有直线和多段线可以直接提取节点坐标)。程序处理曲线的步骤如下。
1.3.1 圆弧、样条曲线转换成多段线
船体外板线是一条曲率不断变化的曲线,并且过渡光顺,制图中往往用样条曲线绘制。样条曲线是三次多项式组成的分段函数,程序可以在曲线上插入细密的点以描绘样条曲线的形状,再依照插值点将其组成多段线,圆弧的处理方式类似。图5是某横剖面图中的外板。用程序将样条曲线转化为多段线后,虽然细密的节点可以准确地描绘曲线的形状,但由1.2节的结论可知,不必将这些节点全部输出至MARS。
1.3.2 节点优化
为提高运算效率,应对节点进行筛选。程序将按以下原则自行判断,过滤掉不必要的点。由1.2节可知,多段线上相邻节点距离取纵骨间距比较合适,没必要取过多的点。如图6所示,取外板曲线中的一小段,并假设A、B、C为圆弧上的点,弦AB、弦BC的中点分别为E、G。E到AB的距离记为d1,G到BC的距离记为d2。若d1、d2均小于ε,则可以认为B点是多余的,用线段AC就可以代替ABC。其中ε是由经验得出的许用值,经测试,程序中 取为1.5 mm时,既可以保证用线段代替的圆弧不会失形,又不至于节点过多。然后将A、C、D看作圆弧上的点,继续比较弦AC、弦CD的中点到圆弧的距离,若小于ε则C点多余,可用线段AD来代替这段曲线,否则应保留C点,继续检验下一段圆弧。以此类推,遍历曲线上所有的节点,过滤多余的节点,提取有效节点的坐标。
图5 样条曲线转为多段线后的节点数
图6 过滤多于节点的方法
2 程序工作原理
在校核总纵强度时,只有计入总强度的构件才需要在MARS中建出,故在运行程序之前需先删去横剖面图中的横梁、纵骨补板、垂向扶强材等不参与总纵强度的构件。为便于阐述,采用与MARS中相一致的坐标系规定,即横剖面图中,基线为Y轴,指向右舷为正,中心线为Z轴,竖直向上为正,基线与中心线的交点为原点。每个横剖面建在YOZ平面中。
程序的工作的步骤如下。
2.1 建立船体的数据库
用程序自动生成xml文件,生成船舶的基本信息,如船长等船型参数、航速、材料等。此部分对应MARS中的BSD模块。这些信息是由用户在程序界面中输入的,后期也可以在MARS软件中修改。
2.2 对选中的CAD图线内容进行识别
在AutoCAD平台中,主要用平面和空间直线、平面圆弧曲线、平面和空间多段线、平面非均匀B样条以及空间非均匀B样条曲线等函数来描述图形[4]。 典型横剖面图中,规定用绿色的点划线表示中心线,用白色的实线表示基线,此两种线不表示结构件。用鼠标框选得的对象(程序会排除掉线型为点划线和实线的Line对象),即为待输出的结构件,大致可分为3类:板材、桁材、骨材。板材包括外板(含底部和舷侧外板)、内舷侧(仅双壳情况时有)、甲板、纵壁。若建模时将桁材(T型材)当作板材处理,并不影响剖面模数的计算结果,故先初步将对象分为板材和骨材这两类,分别进行处理。根据制图规范,可见板材用粗实线表示,故所选对象的类型若不为红色的直线、多段线、圆弧、样条曲线中的一种,该对象即为骨材,否则为板材。(在CAD制图中习惯用红色表示粗线)
2.3 读取板材信息
对于归为“板材”这一类的对象,只可能是直线、多段线、圆弧和样条这四种曲线之一。板材在MARS模型中对应“板”(panel),panel又由若干“节点”(node)构成并定义。需要指出的是,在MARS中建模是讲究方向的,其板的延伸方向必须沿着坐标轴的方向。
首先在典型横剖面图中选择坐标原点,依照前述原则建立局部坐标系YOZ。对于直线和多段线,运用VBA命令直接提取其上节点的坐标信息,并按照Y坐标由小到大的顺序排列,线上节点按此排序作为node依次写入xml文件中,从而定义MARS模型中的板。若线上节点Y坐标均相同,则按Z坐标由小到大排列节点。
对于圆弧或者样条曲线的处理,程序先将它们转换为多段线,然后按照1.3节描述的思路,过滤曲线上不必要的点,再按照多段线和直线的处理方式操作。
2.4 读取骨材信息
参与总纵强度计算的纵向连续构件有T型材、扁钢和球扁钢。对于T型材和扁钢,归为板材处理。由于工作中遇到的纵骨大部分采用球扁钢,绘制纵骨的投影采用内部开发的“球扁钢动态块”,它按常用球扁钢型号、补板形式定义动态块,绘图时可直接插入块。用程序可以方便地读取“球扁钢动态块”的坐标信息和型号。
2.5 将构件信息导入MARS中
xml是一种可扩展标记语言,以结构化的方式描述各种类型的数据[5]。MARS的模型可以用xml语言来描述,形成的xml文件可以在MARS中直接打开操作,且xml文件也兼容于NAPA软件。本文开发的程序按照MARS建模格式的要求自动生成xml语句,将上述读取的结构件信息(包括外板、甲板、纵舱壁、纵骨和桁材的坐标、以及球扁钢的属性)转译为xml文件,从而生成 MARS模型。
2.6 在MARS中完成并计算剖面模数
在MARS中打开2.5节中生成的xml文件,此时,横剖面基本完成,只需补充板材的厚度、定义开口,便可完成建模,随后可计算剖面模数。
程序工作的流程图如图7所示。
图7 程序工作流程图
3 应用实例
以下是一个使用程序输出剖面到MARS的例子。
首先,在简化后的CAD横剖面图(图8)中,加载开发的VBA应用程序,点击菜单中的“MARS建模工具”, 弹出如图9左侧所示的程序界面。若为第一次建立剖面,需填写船型基本数据,点击“设置船型基本数据”按钮,在弹出的对话框中填写。
然后点击图9左侧程序界面中的“鼠标选择原点按钮”,选择横剖面的原点(中心线与基线的交点),再框选整个横剖面,按鼠标右键确认选择完毕,回到程序主界面,点击“新增横剖面”。此时,在CAD图纸文件同一路径下就会生成一个xml文件,即模型文件。xml文件局部内容如下页图10所示,图10(a)显示xml模型文件的基本构成,图10(b)为定义节点坐标的语句。
图8 CAD横剖面图
图9 操作界面
最后,打开MARS,导入刚才生成的xml文件,可以看到输出的剖面。此时,只需要再输入板厚和开口参数就可以计算剖面模数(见下页图11)。
图10 xml模型文件(部分)
图11 在MARS中查看模型
4 结 语
本文介绍的这款自行开发的程序,在简化后的二维横剖面CAD图基础上,可以将构件信息直接输出至船级社软件MARS中,用户只需修改少量参数就能完成建模并计算剖面模数,可辅助设计人员在初期确定横剖面方案。此程序配合现行的设计思路和流程设计,不仅操作简单、提高工作效率,也有效减少人为错误,具有一定的实用价值。