管道设计CAD系统中重量重心计算

摘要:
管道设计CAD系统中的重量和重心计算eryar@163.comAbstract.管道设计CAD系统具有与重量和重心计算相关的功能。该功能获得的重心数据主要用于在托盘造船过程中根据重心安装起重附件。本文主要介绍了重心在相关软件中的作用以及重心计算的实现原理。最后,使用OpenCASCADE计算管道模型的重量重心进行验证。在PDMS/AVEVAMarine中计算重心非常简单。只需添加要计算的SITE、ZONE或PIPE,BRANCH就可以计算重心的重量。

管道设计CAD系统中重量重心计算

eryar@163.com

Abstract. 管道设计CAD系统中都有涉及到重量重心计算的功能,这个功能得到的重心数据主要用于托盘式造船时方便根据重心设置吊装配件。重量信息主要用于采购订货。本文主要介绍相关软件中重量重心功能,及重量重心计算实现原理。最后结合OpenCASCADE计算管道模型重量重心来验证。

Key Words. CoG, CentreOfMass, Piping CAD, Piping Design

1.Introduction

船舶设计系统和工厂设计系统等都有管道设计功能。在船舶建造过程中,工程最大的是船体建造,其次是船舶管系的制造和安装。

建国初期船舶管系的管子制造和安装要等船体基本成形,机械设备都基本到位,船船管工才能拿着原理图和详细设计的管子走向图,到施工现场用直径6mm或8mm的铁丝样条取样,把样条弯制成想要的形状,再带回车间下料,上弯管机按样条形状进行弯制,然后领管接头,再上船到施工现场进行管子试装。试装时管接头与管子用点焊连接,再把试装管子拆下来,带回车间打磨,泵压,表面处理,最后上船安装。这种方法叫管子制造现场取样法,这种工艺方法建造周期长;管工的劳动强度大;管子走向不合理,与其他专业如电缆,风管等容易碰撞,返工量大,造成人力物力浪费;管子现场试装的作业环境比车间差,造成管子建造质量差。

为了缩短建造周期,提高造船质量,单从船舶管系这个角度讲,必须要有创新去提高效率。

60~70年代,在木地板上以1:1的比例画各种船体背景,画各种机械设备外形及管路接口,进行管子系统放样。当时用的计算工具是计标尺,这种方法需要的工作场地大,放样人员蹲在地上进行操作,劳动强度很大。

70~80年代,在工作台上用长涤伦薄膜以1:10的比例画船体背景,画各种机械设备外形及与管路接口,进行管子系统放样,这种方法比上种工作场地小,减轻了放样人员的劳动强度。

80~90年代,把涤伦薄膜铺设在图板上,以1:20的比例分区综合放样。所谓综合放样,就是在小小的绘图板上,船体,电气,轮机三大专业的放样设计一起进行,综合协调,把很多将会在生产中出现的问题,在绘图板上解决。在这个舞台上,放样人员按建造方针,管理部门和生产车间的要求,提供各种建造阶段的施工图纸和托盘。由于当时没有采用计算机放样,有些好的设计要求,靠设计部门在有限的设计周期内很难实现,这个时期只是生产设计的初期阶段。

90年代后全国较大的造船厂家都用计算机放样,把设计图中的管子走向数据、管件数据、管路数据等输入计算机。通过计算机辅助设计,解决了管子零件弯管程序计算量很大的难题和出图量很大的难题,大缩短生产设计的周期,提高了设计质量。

现在船厂、设计院都是采用计算机辅助设计系统进行管道设计。从上述建造方法的进程可以看出通过创新,利用计算机这个强大工具改进了生产方式,提高了效率和质量。

2.Cog in PDMS/AVEVA Marine

在PDMS/AVEVA Marine中提供了计算模型重量重心Weight and Centre of Gravity(CoG)及表面积的功能。如下图所示:

wps_clip_image-26573

重量重心的功能是在托盘造船、模块造船的基础上产生的需求。有了重量重心数据,就可以便于组织托盘、模块的吊装。

PDMS/AVEVA Marine中统计重量重心很简单,只需要添加需要统计的SITE、ZONE或者PIPE,BRANCH就可以计算出重量重心。

在PDMS/AVEVA Marine中统计重量前,需要完善管件库与特性库的关联。主要需要定义管件的质量及管子的线密度信息。

有了管件的质量及管子的线密度数据,如何计算管道的重量重心呢?

3.Com in OpenCASCADE

OpenCASCADE中提供了计算几何体的全局属性的功能,可计算曲线、曲面或几何体的质量Mass,质心(CentreOfMass),转动惯量等。所以可以使用OpenCASCADE来计算重量重心。

下面来对管道模型的重量重心计算进行分析。地球表面或表面附近的物体会受到地心引力作用。物体的诸微元所受到的地心引力由于距离地心很远,可看成是一组平行力系。这组平行力系有一个合力,合力的大小称为物体的重力。合力的作用线有一个特性,即不论物体相对地球如何放置,合力作用线总会通过一点,这个点称为物体的重心。物体重心相对物体的位置不因物体空间位置而改变。

设在空间中有N个质点,它们分别位于点(x1,y2,z1),(x2,y2,z2),... (xn, yn, zn)处,质量分别为m1, m2, ... Mn。由力学可知,该质点系的重心坐标为:

wps_clip_image-25847

根据重心的计算公式,结合管道模型的特点,可以做如下假设:

l 将管子附件看成一个质点,质点坐标为管子附件的空间位置,质量为管件的质量;

l 将管段长度乘以线密度得到质量后再将其看成一个质点,质点坐标为管段的中心点;

下面使用OpenCASCADE中的类来计算管道系统的质量和质心坐标。有了质量和质心,乘以重力加速度即可以得到重量重心。计算一段简单管道模型的重量重心,管道模型如下图所示。模型从下到上对应的坐标及质量如下:

l 法兰Flange: Position X 26104mm Y -11441mm Z 19246.184mm, weight 19.815kg

l 管段Tubi:起点坐标:Position X 26104mm Y -11441mm Z 19316.184mm

   终点坐标:Position X 26104mm Y -11441mm Z 21554.039mm

   线密度:0.0315 kg/m

l 三通Tee: Position X 26104mm Y -11441mm Z 21770.039mm, weight 11kg

l 管段Tubi: 起点坐标:Position X 26104mm Y -11441mm Z 21986.039mm

   终点坐标:Position X 26104mm Y -11441mm Z 22828.5mm

   线密度:0.0315 kg/m

l 法兰Flange: Position X 26104mm Y -11441mm Z 22898.5mm, weight 19.815kg

l 垫片Gasket:Position X 26104mm Y -11441mm Z 22898.5mm, weight 1.14kg

在AVEVA Marine中计算的总质量为:148.80kg,

重心坐标为:X 26104.00mm Y -11441.00mm Z 21074.10mm 

wps_clip_image-26868

在OpenCASCADE中的计算代码如下:

/*
Copyright(C) 2017 Shing Liu(eryar@163.com)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/

#include <ElCLib.hxx>

#include <gce_MakeLin.hxx>

#include <GProp_GProps.hxx>
#include <GProp_PGProps.hxx>
#include <GProp_CelGProps.hxx>

#pragma comment(lib, "TKernel.lib")
#pragma comment(lib, "TKMath.lib")

#pragma comment(lib, "TKG2d.lib")
#pragma comment(lib, "TKG3d.lib")
#pragma comment(lib, "TKGeomBase.lib")


// Centre of Mass of pipeline model.
void testCom(void)
{
    GProp_GProps aTool;
    GProp_PGProps aCompProps;

    // add component as point.
    // add flange: Position X 26104mm Y -11441mm Z 19246.184mm, weight 19.815kg
    aCompProps.AddPoint(gp_Pnt(26104.0, -11441.0, 19246.184), 19.815);

    // add tee: Position X 26104mm Y -11441mm Z 21770.039mm, weight 11kg
    aCompProps.AddPoint(gp_Pnt(26104.0, -11441.0, 21770.039), 11.0);

    // add flange: Position X 26104mm Y -11441mm Z 22898.5mm, weight 19.815kg
    aCompProps.AddPoint(gp_Pnt(26104.0, -11441.0, 22898.5), 19.815);

    // add gasket: Position X 26104mm Y -11441mm Z 22898.5mm, weight 1.14kg
    aCompProps.AddPoint(gp_Pnt(26104.0, -11441.0, 22898.5), 1.14);

    aTool.Add(aCompProps);

    // add two pipe as line curve.
    // add tubi: 起点坐标:Position X 26104mm Y -11441mm Z 19316.184mm
    //           终点坐标:Position X 26104mm Y - 11441mm Z 21554.039mm
    //           线密度:0.0315 kg/m
    gp_Pnt aPs1(26104.0, -11441.0, 19316.184);
    gp_Pnt aPe1(26104.0, -11441.0, 21554.039);
    gp_Lin aLine1 = gce_MakeLin(aPs1, aPe1).Value();

    GProp_CelGProps aTubiProp1;
    aTubiProp1.Perform(aLine1, ElCLib::Parameter(aLine1, aPs1), ElCLib::Parameter(aLine1, aPe1));
    aTool.Add(aTubiProp1, 0.0315);

    // add tubi: 起点坐标:Position X 26104mm Y -11441mm Z 21986.039mm
    //           终点坐标:Position X 26104mm Y - 11441mm Z 22828.5mm
    //           线密度:0.0315 kg/m
    gp_Pnt aPs2(26104.0, -11441.0, 21986.039);
    gp_Pnt aPe2(26104.0, -11441.0, 22828.5);
    gp_Lin aLine2 = gce_MakeLin(aPs2, aPe2).Value();

    GProp_CelGProps aTubiProp2;
    aTubiProp2.Perform(aLine2, ElCLib::Parameter(aLine2, aPs2), ElCLib::Parameter(aLine2, aPe2));
    aTool.Add(aTubiProp2, 0.0315);

    gp_Pnt aPc = aTool.CentreOfMass();
    std::cout << "Mass: " << aTool.Mass() << std::endl;
    std::cout << "CentreOfMass: " << aPc.X() << ", " << aPc.Y() << ", " << aPc.Z() << std::endl;
}

int main(int argc, char* argv[])
{
    testCom();

    return 0;
}

计算结果如下图所示:

wps_clip_image-23807

与在AVEVA Marine中计算结果一致。

4.Conclusion

在船舶设计CAD系统和工厂设计CAD系统中都有管道的辅助设计,其中都有统计管道模型重量重心的功能。根据重心的计算公式,将管道模型中的管件简化为质点,再利用公式直接计算。最后在OpenCASCADE中实现重心及总质量的计算,计算结果与AVEVA Marine一致。

OpenCASCADE还可以计算任意曲线、曲面的重心及质量、转动惯量等。这些功能又是如何实现的呢?这个问题留给大家思考。

通过使用OpenCASCADE的功能,可以体会其编程风格。

5.References

1.同济大学数学教研室. 高等数学(下册). 高等教育出版社

2.单辉祖, 谢传峰. 工程力学. 高等教育出版社

免责声明:文章转载自《管道设计CAD系统中重量重心计算》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CSDN上关于ToolTip的知识Oracle 12c 容器讲解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ubuntu20.04.1LTS系统Super simple美化与配置

啰嗦两句 再次安装好了Ubuntu20.04系统,每次的回归都能get到一些新的姿势;本篇主要用于记录和分享自己本次对系统的美化和配置。 桌面效果 主题部分 应用程序主题 光标主题 图标主题 shell主题我最终选择了和应用程序主题自带的shell 扩展插件 扩展插件网站将Dash合并到顶栏Dash to Panel配置文件如下 [/] appicon-...

【C语言】双人格斗小游戏(源码)

【C语言】双人格斗小游戏 芜湖 程序介绍:【C语言】实现双人控制的战斗小游戏 /*-------------------------------------- project: 双人小游戏 anthor: LLz 操作 移动 逆、顺时针旋转 发射子弹 玩家1 4568 7 9 0 玩家2 adws...

C#调用CAD2018进行绘图

最近帮朋友做了一个CAD绘图小工具软件,过程中发现网上这方面资料很少(原谅我不会用google),在这里总结一下自己过程中的遇到的问题和CAD二次开发基本的方法,供各位后来者作为参考。 由于这个小工具做的很简单粗糙,所以没有过深的研究过CAD的API,但是这些资料引导大家入手起步还是挺友好的,特别是对于像我一样的菜鸟。 一、新建Winfrom项目在这里我使...

z-index 应用简单总结

做过页面布局的同学对z-index属性应该是很熟悉了,z-index是针对网页显示中的一个特殊属性。因为显示器是显示的图案是一个二维平面,拥有x轴和y轴来表示位置属性。为了表示三维立体的概念如显示元素的上下层的叠加顺序引入了z-index属性来表示z轴的区别。表示一个元素在叠加顺序上的上下立体关系。 z-index值较大的元素将叠加在z-index值较小的...

利用MongoDB进行地理坐标查询

BS的应用在生活中已经非常常见,我们打车,叫外卖,查个地图之类的都会查询附近的相关坐标位置,mongodb提供了原生的二维地图查询,极大地方便了大家的开发。 假定我们有一个定义了位置信息的集合location,给定a,b,c,d节点 db.location.find() { "_id" : "A", "position" : [ 0, 10 ] } { "...

在移动端H5开发中(关于安卓端position:fixed和position:absolute;和虚拟键盘冲突的问题,以及解决方案)

一、在开发移动端webapp时,我们经常会遇到这样的问题,当我们需要在页面底部固定一个logo或者说明时,往往会采用position:fixed进行固定定位或者absolute定位到最底部 这是一个很常规的操作,但是当页面上有input输入框时,当用户点击输入的时候,虚拟键盘被拉起,会造成我们在底部定位的内容,被谈起,而遮挡我们的输入框,造成无法输入或者界...