PDMS二次开发(十)——螺栓材料统计功能重构开发介绍

1.概述

0.9.3版本主要是重构了螺栓材料统计功能,以sample项目的测试结果为例,螺栓统计的规格和数量与PDMS出的ISO图上标注的螺栓数据一致,有两根不一致的Branch我单独做了说明,我认为按照我的方法计算也是合理的。我本以为螺栓这么一点小东西应该很容易吧,没想到计算起来真是复杂,而且元件属性的订制必须也要符合一致的命名和设置规范,没有统一规范,工具就没有没有办法基于一个标准的计算规则来统计材料,为此我增加了很多元件属性的检查。开发过程经历了三次推倒重来,也算经历了一番波折,最后总算是八九不离十了。因为sample项目的数据量小,材料类别少,所以还有一些判断规则后期需要扩充,以后再说。

2.计算方法

PDMS教程给出的螺栓长度计算公式 = 法兰 + 垫片(对夹元件) + 螺母 + 垫圈 + 露出的丝扣
官方教程说要按5mm圆整,但是我按5mm圆整计算的结果跟iso图总是不一样。
我的计算公式:
螺栓有效长度=法兰(两片) + 垫片(对夹元件) + 螺母 + 垫圈 + 附加长度;
螺栓圆整长度=有效长度按螺栓长度表向上圆整。
计算步骤:

  1. 获取元件的catref;
  2. 遍历元件catref的TEXT,找到STEXT是FLANGE THICKNESS,取RA的序列索引号;
  3. 为什么不在元件的DTSE里找到DKEY是FLTH的节点,因为有很多元件没有DTSE数据;
  4. 在catref的param中解析对应索引号的数值就是法兰厚度;
  5. 同样方法计算对应法兰面的厚度+垫片厚度=螺栓有效长度(净长度length1);
  6. 查找catref的bltfarray,取array的第一个,因为目前发现都只有第一个值;
  7. 获取bltfarray下的bltp,有几个螺栓孔就有几个bolt,以bolt的个数作为螺栓个数;
  8. 获取bltp的btype,根据这个去螺栓等级里找螺栓的类型(例如双头螺柱等),值为BOLT时就是螺栓等级里的默认规格;
  9. 读取螺栓等级表Table(增加几列存储默认值);
  10. 在Table里根据:直径、btype、bsel找到螺栓的描述、材质和boltref(如果btype没有命中,bsel没有命中,取默认值);
  11. 将Table里拿到的螺栓信息回归到bltp,一个bltp就是一个螺栓;
  12. 在Table里根据:直径、btype、bsel找到配件的描述、材质和boltref(如果btype没有命中,bsel没有命中,直接写配件btype名称);
  13. 根据boltref找到配件的名称(在Bitems里)和尺寸(在Bitlength里);
  14. 配件占据的长度=Bitlength里所有配件长度(厚度)的值求和+附加长度值Xtralength=length2;
  15. 螺栓的总净长度=length1+length2=validLength;
  16. 在根据螺栓的直径,在长度表(DTAB)里找到Blength属性;
  17. validLength向上圆整,在Blength的列表数字中找到最近的圆整长度,作为螺栓的最终长度RoundLength;
  18. 将螺栓主体和配件的所有信息组装到材料列表list;
  19. list合并同类项汇总,得到螺栓DataTable

3.验证策略

  1. 没有指定螺栓等级,给出提示,计算终止;
  2. 指定了螺栓等级但没有数据,给出提示,计算终止;
  3. 管段头部(的法兰面)没有连接任何元件,不计算螺栓;
  4. 可以判断一个元件的上下游是否缺少垫片,发现缺少,计算终止;
  5. 元件库CATE的BTSE和BLTP属性是否有缺失,如果缺失,给出提示,计算终止;
  6. 两个相连的法兰面螺栓参数是否一致,主要是指螺栓孔直径和螺栓孔个数。如果不一致,给出提示,计算终止;
  7. 对于上述判断5和6,如果对夹型元件与配对法兰的螺栓属性不一致,不判断对夹型元件螺栓点集参数,以法兰元件的螺栓参数继续计算(该策略其实是对不规范元件库的一种妥协,sample项目的元件库有很多仪表、控制阀甚至是法兰的螺栓参数设置都是空白,我觉得一般的工程公司做正式的项目还是应该把元件库属性要做完整,后面两个策略8和9意见相同)
  8. 对于上述判断5和6,如果仪表类元件与配对法兰的螺栓属性不一致,不判断仪表类元件螺栓点集参数,以法兰元件的螺栓参数继续计算;
  9. 对于上述判断5和6,如果特殊件类元件与配对法兰的螺栓属性不一致,不判断特殊件类元件螺栓点集参数,以法兰元件的螺栓参数继续计算;

4.测试结果

下表是对sample项目36个有螺栓的branch进行测试的记录,复查为ok就表示PipeLine出的螺栓材料跟PDMSISO图显示的材料完全一致,有两个不一致的地方我认为我的计算方式也有道理,下面会讲解。
在这里插入图片描述

5.测试结果证明截图

如果Branch分了多张sheet页,每一张我都截图,最后一张带上我的界面显示整个Branch的螺栓材料表,对部分Branch的计算策略和结果做了解释说明。

100-B-1-B1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

100-B-1-B2

在这里插入图片描述

100-B-1-B3

在这里插入图片描述

100-B-2-B1

在这里插入图片描述
在这里插入图片描述

100-B-2-B2

在这里插入图片描述

150-A-3-B1

在这里插入图片描述

200-B-4-B1

在这里插入图片描述

250-B-5-B1

在这里插入图片描述

250-B-5-B2

在这里插入图片描述

250-B-5-B4

在这里插入图片描述

250-B-5-B5

在这里插入图片描述

80-B-7-B1

在这里插入图片描述

BRANCH 1 of PIPE 7 of ZONE /PIPES

我自己改了一个管线名称叫80-B-20-B1
在这里插入图片描述
这是PDMS显示的信息
在这里插入图片描述
我的日志信息
在这里插入图片描述

BRANCH 1 of PIPE 8 of ZONE /PIPES

和PIPE7相同

BRANCH 1 of PIPE 9 of ZONE /PIPES

和PIPE7相同

50-B-9-B1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有8个螺栓PDMS算成70mm长,我算的是80mm,PDMS出图的时候有螺栓报错信息
在这里插入图片描述
报错的就是这个FCV-114
在这里插入图片描述
M16对应的配件尺寸
在这里插入图片描述
M16螺栓长度表
在这里插入图片描述
所以螺栓的有效长度是18+1.5+18+13+2+2+13+3=70.5mm;
向下圆整是没意义的,根据长度表,超过70mm圆整后应该长度是80mm;
所以我算的螺栓长度是80mm。

50-B-9-B3

在这里插入图片描述

50-B-9-B5

在这里插入图片描述

150-B-6-B1

在这里插入图片描述

100-B-8-B1

在这里插入图片描述
在这里插入图片描述

100-B-8-B1

在这里插入图片描述
在这里插入图片描述

100-B-8-B2

在这里插入图片描述

40-B-10-B1

Sht1没有螺栓
在这里插入图片描述
PDMS算的是70mm,我算的是80mm,原因跟50-B-9-B1一样。

40-B-10-B3

在这里插入图片描述

80-A-11-B1

在这里插入图片描述
PDMS算出来的螺栓,我没有计算螺栓,因为两个法兰的螺栓参数不正确,螺栓BTSE下面竟然没有螺栓点BLTP,我觉得你要是个仪表件啥的就算了,法兰这样就太说不过去了,所以我判为不出材料,然后给出报错提示并能精确定位到出问题的元件,请你改好了元件库再来出材料。
在这里插入图片描述

100-C-13-B1

在这里插入图片描述

100-C-13-B2

在这里插入图片描述

100-C-12-B

在这里插入图片描述

100-C-12-B2

在这里插入图片描述

100-C-12-B3

在这里插入图片描述

100-C-12-B4

在这里插入图片描述
这里我不计螺栓的原因跟80-A-11-B1一样
在这里插入图片描述

100-C-12-B5

在这里插入图片描述

100-C-12-B6

在这里插入图片描述
没有连接任何元件,不计算螺栓。
在这里插入图片描述

100-C-12-B8

在这里插入图片描述

80-B-14-B1

在这里插入图片描述
提示了螺栓不匹配,这里的不匹配主要是检查螺栓孔直径和螺栓个数,为什么不匹配螺栓还是计算出了结果呢,因为根据上文提到的验证策略789,这里我觉得应该增加一个开关,让用户选择强规则检查还是弱规则检查,强规则的话则严格要求螺栓属性匹配,不匹配的话不出材料给错误提示,弱规则的话则按验证策略789计算。
在这里插入图片描述

150-A-57-B1

在这里插入图片描述

150-A-57-B2

在这里插入图片描述

6.元件库规范

要正确的出螺栓材料,元件库要有一定的命名规范和数据设置规则:

  1. 材料等级要设置螺栓等级
  2. 法兰连接面目前只判断了FBB和FBD(已实现,在0.9.3.3版本里已经改为用户自定义类型);
  3. 对夹元件的法兰面目前只判断了WFBB和WFBD(已实现,在0.9.3.3版本里已经改为用户自定义类型);
  4. 法兰面厚度属性字段的STEXT必须命名为FLANGE THICKNESS;
    在这里插入图片描述
  5. 对夹元件长度属性字段的STEXT必须命名为LAY LENGTH或THICKNESS;
  6. CATE的属性字段TEXT必须命名为XXX-PAX或者PAX-XXX格式;
  7. 垫片厚度必须设置在params数组的顺序第二位;
  8. 螺栓点集(BTSE)下应设置螺栓点(BLTP);

7.异常信息捕捉和提示

7.1没有制定螺栓等级

在这里插入图片描述
在这里插入图片描述

7.2螺栓等级里没有螺栓元件类型

在这里插入图片描述
在这里插入图片描述

7.3元件没有设置螺栓参数

在这里插入图片描述
在这里插入图片描述

7.4其他错误示例

#[E10056]:Element[23584/10335]上游缺少垫片 2020/7/11 21:36:59
#[E10084]:Element[23584/5736]的螺栓点集(BTSE)中没有设置螺栓点(BLTP),请检查元件库 2020/7/11 23:12:34
#[E10081]:Element[23584/5736]螺栓属性有误,请检查元件库CATE的BTSE和BLTP属性 2020/7/11 23:12:34
#[E10082]:Element[23584/5764]与Element[23584/5766]的螺栓参数设置不匹配! 2020/7/11 23:34:05
#[I10051]:Branch[80-B-20-B1]头部(的法兰面)没有连接任何元件,不计算螺栓 2020/7/13 0:37:47
#[I10051]:Branch[80-B-20-B1]尾部(的法兰面)没有连接任何元件,不计算螺栓 2020/7/13 0:37:47

总结和规划

  1. 计算真是太复杂了,做完以后已经不想说话了,只想静静,不要问我静静是谁;
  2. 目前的计算还有很多判断依据是写死的,未来考虑改成可配置式,这样就便于灵活扩展,比如可以用户自定义参与计算和判断的法兰面形式(已实现,在0.9.3.3版本里已经改为用户自定义类型);
  3. 元件属性的命名规则是否做成可配置,我个人感觉意义不大,一个元件库按照标准的命名方式做就可以了,没必要五花八门地命名;

关于12.0.SP6版本的补充说明

  1. 7月20日发布0.8.5版,更新内容为同步更新到0.9.3;
  2. 12.0.SP6默认使用旧螺栓等级计算方法,请改为使用新螺栓等级计算方法,Pipeline只支持新螺栓等级计算方法;
  3. 需要注意一个细节:12.0.SP6与12.1.SP4在获取CATREF的属性param时的写法不同。
DbDouble[] catParams = catref.GetDbDoubleArray(DbAttributeInstance.PARA);//12.1.SP4写法

string[] catParams = catref.GetAsStringArray(DbAttributeInstance.PARA);//12.0.SP6写法
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiangcns

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值