摘要
0.9.3版升级优化内容
- 重构了螺栓数据计算方法;
- 修订了说明,增加了关于螺栓材料验证策略的说明。
概述说明
0.9.3版本主要是重构了螺栓材料统计功能,以sample项目的测试结果为例,螺栓统计的规格和数量与PDMS出的ISO图上标注的螺栓数据一致,有两根不一致的Branch我单独做了说明,我认为按照我的方法计算也是合理的。我本以为螺栓这么一点小东西应该很容易吧,没想到计算起来真是复杂,而且元件属性的订制必须也要符合一致的命名和设置规范,没有统一规范,工具就没有没有办法基于一个标准的计算规则来统计材料,为此我增加了很多元件属性的检查。开发过程经历了三次推倒重来,也算经历了一番波折,最后总算是八九不离十了。因为sample项目的数据量小,材料类别少,所以还有一些判断规则后期需要扩充,以后再说。
计算方法
PDMS教程给出的螺栓长度计算公式:
螺栓长度 = 法兰 垫片(对夹元件) 螺母 垫圈 露出的丝扣
官方教程说要按5mm圆整,但是我按5mm圆整计算的结果跟iso图总是不一样。
我的计算公式:
螺栓有效长度=法兰 垫片(对夹元件) 螺母 垫圈 附加长度
螺栓圆整长度=有效长度按螺栓长度表向上圆整
计算步骤:
- 获取元件的catref;
- 遍历元件catref的TEXT,找到STEXT是FLANGE THICKNESS,取RA的序列索引号;
- 为什么不在元件的DTSE里找到DKEY是FLTH的节点,因为有很多元件没有DTSE数据;
- 在catref的param中解析对应索引号的数值就是法兰厚度F1;
- F1 同样方法计算对应法兰面的厚度 垫片厚度=螺栓有效长度(净长度length1);
- 查找catref的bltfarray,取array的第一个,因为目前发现都只有第一个值;
- 获取bltfarray下的bltp,有几个螺栓孔就有几个bolt,以bolt的个数作为螺栓个数;
- 获取bltp的btype,根据这个去螺栓等级里找螺栓的类型(例如双头螺柱等),值为BOLT时就是螺栓等级里的默认规格;
- 读取螺栓等级表Table(增加几列存储默认值);
- 在Table里根据:直径、btype、bsel找到螺栓的描述、材质和boltref(如果btype没有命中,bsel没有命中,取默认值);
- 将Table里拿到的螺栓信息回归到bltp,一个bltp就是一个螺栓;
- 在Table里根据:直径、btype、bsel找到配件的描述、材质和boltref(如果btype没有命中,bsel没有命中,直接写配件btype名称);
- 根据boltref找到配件的名称(在Bitems里)和尺寸(在Bitlength里);
- 配件占据的长度=Bitlength里所有配件长度(厚度)的值求和 附加长度值Xtralength=length2;
- 螺栓的总净长度=length1 length2=validLength;
- 在根据螺栓的直径,在长度表(DTAB)里找到Blength属性;
- validLength向上圆整,在Blength的列表数字中找到最近的圆整长度,作为螺栓的最终长度RoundLength;
- 将螺栓主体和配件的所有信息组装到材料列表list;
- list合并同类项汇总,得到螺栓DataTable
验证策略
- 没有指定螺栓等级,给出提示,计算终止;
- 指定了螺栓等级但没有数据,给出提示,计算终止;
- 管段头部(的法兰面)没有连接任何元件,不计算螺栓;
- 可以判断一个元件的上下游是否缺少垫片,发现缺少,计算终止;
- 元件库CATE的BTSE和BLTP属性是否有缺失,如果缺失,给出提示,计算终止;
- 两个相连的法兰面螺栓参数是否一致,主要是指螺栓孔直径和螺栓孔个数。如果不一致,给出提示,计算终止;
- 对于上述判断5和6,如果对夹型元件与配对法兰的螺栓属性不一致,不判断对夹型元件螺栓点集参数,以法兰元件的螺栓参数继续计算(该策略其实是对不规范元件库的一种妥协,sample项目的元件库有很多仪表、控制阀甚至是法兰的螺栓参数设置都是空白,我觉得工程公司做正式的项目还是应该把元件库属性要做完整,后面两个策略8和9意见相同);
- 对于上述判断5和6,如果仪表类元件与配对法兰的螺栓属性不一致,不判断仪表类元件螺栓点集参数,以法兰元件的螺栓参数继续计算;
- 对于上述判断5和6,如果特殊件类元件与配对法兰的螺栓属性不一致,不判断特殊件类元件螺栓点集参数,以法兰元件的螺栓参数继续计算;
测试结果
测试结果证明截图
如果Branch分了多张sheet页,每一张我都截图,最后一张带上我的界面显示整个Branch的螺栓材料表,对部分Branch的计算策略和结果做了解释说明。
因为图太多,这里我只截取了一根正常的管线和部分有特例说明的管线,可以点击“阅读原文”去我的CSDN查看全部Branch运行结果截图。
100-B-1-B1
100-B-1-B2
100-B-1-B3
BRANCH 1 of PIPE 7 of ZONE /PIPES
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。
80-A-11-B1
PDMS算出来的螺栓,我没有计算螺栓,因为两个法兰的螺栓参数不正确,螺栓BTSE下面竟然没有螺栓点BLTP,我觉得你要是个仪表件啥的就算了,法兰这样就太说不过去了,所以我判为不出材料,然后给出报错提示并能精确定位到出问题的元件,请你改好了元件库再来出材料。
80-B-14-B1
提示了螺栓不匹配,这里的不匹配主要是检查螺栓孔直径和螺栓个数,为什么不匹配螺栓还是计算出了结果呢,因为根据上文提到的验证策略789,这里我觉得应该增加一个开关,让用户选择强规则检查还是弱规则检查,强规则的话则严格要求螺栓属性匹配,不匹配的话不出材料给错误提示,弱规则的话则按验证策略789计算。
元件库规范
要正确的出螺栓材料,元件库要有一定的命名规范和数据设置规则:
- 材料等级要设置螺栓等级;
- 法兰连接面目前只判断了FBB和FBD;
- 对夹元件的法兰面目前只判断了WFBB和WFBD;
- 法兰面厚度属性字段的STEXT必须命名为FLANGE THICKNESS;
- 对夹元件长度属性字段的STEXT必须命名为LAY LENGTH或THICKNESS;
- CATE的属性字段TEXT必须命名为XXX-PAX或者PAX-XXX格式;
- 垫片厚度必须设置在params数组的顺序第二位;
- 螺栓点集(BTSE)下应设置螺栓点(BLTP);
异常信息捕捉和提示
没有制定螺栓等级
螺栓等级里没有螺栓元件类型
元件没有设置螺栓参数
其他错误示例
最新版下载地址
版本:0.9.3 适配:PDMS12.1.SP4 链接:https://pan.baidu.com/s/1Ihbh7mSwRqwKiCBiRKN1nQ
提取码:gldw