找回密码
 注册有问题进QQ群591484440

QQ登录

只需一步,快速开始

查看: 4010|回复: 17

[Pml Macros 工具] PDMS二次开发 管线出图前处理程序

 火.. [复制链接]

签到天数: 30 天

[LV.5]瞎扑签到5级

管理员

积分
4261
发表于 2012-10-17 13:48:20 | 显示全部楼层 |阅读模式
PDMS管线出图前处理程序
话说项目进入出图阶段,管线设计过程中各种小问题也都暴露了出来,如管线编号不正确、管件压力等级误选、直管段长度不满足要求以及各种冗余信息等等。一条条改起来非常繁琐,而且容易出现遗漏。根据近期实战经验,编制了一段批处理程序,实现以下功能:
  (1)自动检查并更正管线号编码,主要修改英寸符号问题;
  (2)自动检查管线分支实际压力等级与管线号指定等级是否一致;
  (3)自动关闭支架SREF出料,清理ISO图中冗余信息;
  (4)检查管线头尾是否与设备管嘴相连,如果是,则自动关闭与之配对的法兰、垫片和螺栓的出料信息;
  (5)检查所有直管段创度,如果小于最小允许值,则在模型中标出长度并提示修改。
--CODED BY HANYF, EDI OF CPOE
Onerror CONTINUE
--onerror GOLABEL /ReportERR
!MINTUBILEN = 75
!curCE=!!CE
Var !pipes COLLECT ALL PIPE for CE
-- 检查管线号命名,主要检查英寸符号
DO !Pipe VALUES !Pipes
    !!CE=Object DBREF(!Pipe)
    !Name=!!CE.Name.TRIM()
    !Pos=!Name.match('-')
  
    !aftName=!Name.substring(!pos)
    !preName=!Name.substring(1,!pos - 1 )
    !tmpStr='/'
    !endPos=!pos - 1
   
    DO !i from 1 to !endPos by 1
       !Num=!preName.substring(!i,1)
       if (Match('0123456789',!num) GT 0) Then
           !tmpStr=!tmpStr + !Num
       endif
    ENDDO
    !!CE.Name=!tmpStr.Trim() + '"' + !aftName
ENDDO
  !!CE=!curCE
  Var !brans COLLECT ALL BRAN for CE
-- 检查分支实际使用等级与管线号中指定等级是否匹配
DO !bran VALUES !brans
    !!CE=Object DBREF(!bran)
    !realSpec=!!CE.Pspec.name.substring(2)
    if (Match(!!ce.Owner.name,!realSpec) EQ 0) then
         $P $!!ce.name 's rating not matched.
    else
         --$P $!realSpec is OK  
     endif
ENDDO
  !!CE=!curCE
  
  Var !supps COLLECT ALL ATTA for CE
  --清除ISO图中冗余支吊架信息
  DO !supp VALUES !supps
     !!CE=Object DBREF(!supp)
     !Name=!!CE.Name.trim()
     if (Match(!Name,'SREF') ne 0) then
         MTOC OFF
     endif      
  ENDDO
  
   !!CE=!curCE
  Var !brans COLLECT ALL BRAN for CE
--检查管线头尾是否连接到设备管嘴,如果是,则关闭配对法兰、垫片、螺栓出料
DO !bran VALUES !brans
    !!CE=Object DBREF(!bran)
    if (Unset(!!CE.Href)) then
         $P $!!CE.Name Href is not set
    else
      
      if (BadRef(!!CE.Href)) then
           $P !!CE.Name has bad Href,check it
      endif
      if (!!CE.Href.type eq 'NOZZ') then
         if (!!CE.Href.Owner.type eq 'EQUI' or !!CE.Href.Owner.type eq 'SUBE') then
               if( !!CE.member[1].type eq 'GASK') then
                    !!CE.member[1].MTOC='OFF'
               endif
               if( !!CE.member[2].type eq 'FLAN') then
                    !!CE.member[2].MTOC='OFF'
               endif
               $P $!!CE.Name : Head Flan GASK MTO set off
         endif
       endif
    endif
    !lstPos=!!CE.member.MaxIndex()
    if (Unset(!!CE.Tref)) then
        $P $!!CE.Name Tref is not set
    else
      if (BadRef(!!CE.Tref)) then
           $P !!CE.Name has bad Tref,check it
      endif
      if (!!CE.Tref.type eq 'NOZZ') then
         if (!!CE.Tref.Owner.type eq 'EQUI' or !!CE.Tref.Owner.type eq 'SUBE') then
               if( !!CE.member[!lstPos].type eq 'GASK') then
                     !!CE.member[!lstPos].MTOC='OFF'
               endif
                !scdPos=!lstPos - 1
               if( !!CE.member[!scdPos].type eq 'FLAN') then
                     !!CE.member[!scdPos].MTOC='OFF'
               endif
               $P $!!CE.Name : Tail Flan GASK MTO set off
         endif
      endif
   endif
ENDDO
  !!CE=!curCE
  -- 检查直管段长度,是否满足最小直管段的要求
  Var !Tubis COLLECT ALL TUBI for CE
  
  !aid = 1
  DO !Tubi VALUES !Tubis
     !!CE=Object DBREF(!Tubi)
     if (!!CE.badref() ) then
        skip
     endif
     if (!!CE.itLen LT !MINTUBILEN ) then
        !frmPos=!!CE.aPos
        !toPos=!!CE.lPos
        !midPos=!frmPos.midPoint(!toPos)
        !msg=!aid.string() + ':Too short,' & !!CE.itLen.STRING('D2')
        AID LINE NUMBER $!aid $!frmPos TO $!toPos
        AID TEXT NUMBER $!aid |$!msg| at $!midPos
        !aid=!aid + 1
     endif
  ENDDO
  
Label /ReportErr
handle ANY
  $P ----------Error------------
  $P $!!Error.Text
  $P $!!Error.Command
  $P $!!Error.Line
  $P ---------------------------
endhandle
今天很开心!

签到天数: 4 天

[LV.2]瞎扑签到2级

新手上路

积分
411
发表于 2014-10-13 21:04:55 | 显示全部楼层
学习了,真是高人呀
虚虚实施
回复 支持 反对

使用道具 举报

签到天数: 24 天

[LV.4]瞎扑签到4级

新手上路

积分
284
发表于 2014-11-25 16:50:57 | 显示全部楼层
这个有点意思,不错。
回复 支持 反对

使用道具 举报

签到天数: 5 天

[LV.2]瞎扑签到2级

新手上路

积分
191
发表于 2014-12-1 14:07:39 | 显示全部楼层
不错,学习之~对这种不要金币的应该大大的给予奖励!
fgsdfgdh345345PMLNetExample擦
回复 支持 反对

使用道具 举报

该用户从未签到

新手上路

积分
57
发表于 2014-12-7 20:17:23 | 显示全部楼层
谢谢分享,很有用
回复 支持 反对

使用道具 举报

签到天数: 159 天

[LV.7]瞎扑签到7级

超级会员

积分
2315
发表于 2015-9-17 20:15:22 | 显示全部楼层

哈哈哈哈
回复 支持 反对

使用道具 举报

签到天数: 9 天

[LV.3]瞎扑签到3级

新手上路

积分
102
发表于 2015-12-8 23:16:04 | 显示全部楼层
很实用,感谢分享

今天很开心
回复 支持 反对

使用道具 举报

签到天数: 7 天

[LV.3]瞎扑签到3级

新手上路

积分
95
发表于 2016-3-26 16:21:15 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

签到天数: 818 天

[LV.10]瞎扑签到10级

超级会员

积分
8377
发表于 2016-5-13 00:15:19 | 显示全部楼层
学习下!感谢楼主
今天很开心!
回复 支持 反对

使用道具 举报

签到天数: 6 天

[LV.2]瞎扑签到2级

新手上路

积分
148
发表于 2016-12-10 01:22:47 | 显示全部楼层
怎么用啊
嘿嘿嘿嘿二黑
回复 支持 反对

使用道具 举报

本版积分规则

QQ|手机版|关于我们|Archiver|手机版|小黑屋|工程G3D ( 鄂ICP备16022302号-2 )

GMT+8, 2024-4-23 18:39 , Processed in 0.422005 second(s), 28 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表