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

管道设计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)及表面积的功能。如下图所示:

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

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。由力学可知,该质点系的重心坐标为:

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

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 

在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;
}

计算结果如下图所示:

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

4.Conclusion

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

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

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

5.References

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

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

时间: 2025-01-01 00:17:28

管道设计CAD系统中重量重心计算的相关文章

设计-考勤系统中考勤排班和结果计算

问题描述 考勤系统中考勤排班和结果计算 对于考勤系统中的班次,出现跨天的情况,在这种情况下,如何设计表结构,如何计算考勤结果 解决方案 可以把日期转换成浮点数来计算.日期浮点数是这样的数:如果两个时间差1天,那么就差1,如果差1小时,就差1/24,以此类推.不用理会跨天还是跨月.它永远和时间差对应. 解决方案二: 你用分钟数表示排班的起至时间,设置的时候就可以超过24:00 了.转换成实际时间,就用当天0点 + 开始分钟数-当天0点 + 结束分钟数,得到的时段自然就跨天了. 解决方案三: 可以设

当心ERP系统中的多骨诺牌效应

从能量学的角度看,多骨诺牌效应所产生的破坏性是非常巨大的.骨牌站着使,重心比较高:倒下的时候,重心则下降,在第一枚骨牌倒下的时候,重力势能转化为动能.它倒在第二枚骨牌上的时候,这个动能就转移到第二张骨牌上,第二章牌将第一张牌转移过来的动能和自己倒下过程中所产生的重力势能进行累积,然后转移到第三张骨牌上.如此下去,后面的牌倒下的速度会越来越快,所破坏性也就越来越大. 其实,这种多骨诺牌效应在实际生活中到处看见.今天我就来谈谈在http://www.aliyun.com/zixun/aggregat

C++系统中指针错误,添加不了对象,真的很急!!!!

问题描述 C++系统中指针错误,添加不了对象,真的很急!!!! 为什么不能实现添加啊!!!!!真的很急 #include <iostream>#include <iomanip>#include <conio.h>#include <string>#include <fstream>#include <cstdlib>using namespace std;int i=0;const int Maxp=100;//最大商品类的数量cl

浅谈Windows Embedded在嵌入式系统中的应用

在IT行业的众多分支中,嵌入式是发展得最快的领域之一,因为越来越多的产品和服务需要嵌入式系统予以支撑,消费类电子产品.生产制造业.办公自动化.工业控制等诸多行业都和嵌入式有密不可分的关系.也正是由于嵌入式系统客观的海量需求,越来越多厂商将目光投在了这块蛋糕上,继一些老牌厂商之后,新兴软件巨头也纷纷推出了自己的产品,微软是其中我们最熟悉的一家企业.微软的嵌入式系统产品Windows Embedded工控系统有着显著的特色,在金融.机械.交通.航空等行业中广泛地应用着,尤其在自动化.网络化和智能化等

探究电气设计系统中计算机的应用

如今社会对电力的需求量越来越高,电力也已经成为了许多生产活动必备的元素.对于电气设计系统而言,为人民供应安全可靠的电力是当前的首要任务.专业人员应当利用计算机技术,对落后的电气系统进行淘汰或升级,以便更好地满足人们对电力日益增长的需求. 1 线路设计系统 电气设计系统的相关线路较为复杂,必须由专业人员进行操作.线路设计的质量会直接影响到整个供电系统的功能,且线路设计也是电气设计的重点环节之一.设计人员应当引起对线路设计的高度重视,因为这一环节如果没有很好地完成,电气设计系统的相关工作就难以得到正

在业务系统中处理小数精度, 四舍五入,全舍弃,全进位的方法

在业务系统中,不同的客户对小数的处理有不同的方法 通过在设置保留的小数位数,以及小数位数以后的尾数的处理方法,可以灵活的满足客户要求 处理方法表  ID NUMBER(1)    ,                                                       --设置ID AMOUNTDOT      NUMBER(4,2) DEFAULT 0.01,  --金额精确度 1: 精确到元  0.1:精确到角  0.01:精确到分ROUNDING       NUMB

Sybase数据库在四川GPRS系统中的应用

一.背景 随着通信技术的快速发展,我们的商务活动涵盖了新的内容,提出了新的需求,移动通信技术开始走近商务.而现在移动通信系统也在发生巨大的变化,应用广泛的GSM通信网络正在向第三代移动通信系统迈进,而GPRS则是其必经的过渡阶段.因此,当前的许多电信运营商都在开始向新技术演进,以充分把握未来的无限商机.然而,技术的演进将涉及到众多问题,如基础设施的建设.应用系统的更新及各项服务的跟进等.鉴于这种发展趋势,致力于该领域的许多解决方案提供商也正在全力开发具有很强针对性的技术,以便帮助电信运营商实现顺

Linux系统中的进程调度介绍

  操作系统要实现多进程,进程调度必不可少. 有人说,进程调度是操作系统中最为重要的一个部分.我觉得这种说法说得太绝对了一点,就像很多人动辄就说"某某函数比某某函数效率高XX倍"一样,脱离了实际环境,这些结论是比较片面的. 而进程调度究竟有多重要呢? 首先,我们需要明确一点:进程调度是对TASK_RUNNING状态的进程进行调度(参见<linux进程状态浅析>).如果进程不可执行(正在睡眠或其他),那么它跟进程调度没多大关系. 所以,如果你的系统负载非常低,盼星星盼月亮才出

Linux系统中netstat命令的基本使用方法

  在计算中,netstat(网络统计数据)是一个命令行工具,它显示传输控制协议的网络连接(传入和传出),路由表,和一个数字网络接口 (网络接口控制器或者软件定义的网络接口)和网络协议的统计数据.它可在类Unix操作系统,包括OS X,Linux,Solaris和BSD,并提供对基于Windows NT的操作系统,包括Windows XP,Windows Vista中,Windows 7和Windows8. 本文主要介绍netstat在Linux的使用 netstat man的帮助手册会有提示信