Pipe Spacings

Hello Friends,

To maintain actual pipe spacing between two pipes with clamped support in our project std we hvae to take flange OD on pipe rack. but on rack few lines have flange connection others not having flanged connection. but to maintain we have to take flange od without modelling flange or refering pipe data i like to refer flange od from pipe spec and pipe size and pspec ratting. i took the report but not able to take exact flange od for both lines. flange OD to be consider listed below conditions

1. pipe spec

2. rating same as pipe

3. size same as previous component

i wrote few lines please help me to complete it 

VAR !A COLL ALL SPCO WITH SPRA PBORE EQ 250 AND (matchw(Stype, '*Flange*') EQ T) AND (matchw(Stype, '*Blind*') EQ F) FOR /A1A
ALPHA REQ CLEAR
DO !B FROM 1 TO !A.SIZE()
$!A[$!B]
Q DTXR param[7] REF
ENDDO

  • ID@
    VAR !REF REF
    MM BORE
    VAR !APSPEC PSPEC OF PIPE
    VAR !ALBOO LBORE
    !ABO = !ALBOO.REAL()
    VAR !AP PL OD
    !PL = !AP.REAL() / 2

    IF(INTH GE 0) THEN
    !AINSUL = INTH / 2
    ELSEIF(INTHEQ 0) THEN
    !AINSUL = 0
    ENDIF

    ID@
    VAR !BREF REF
    ALPHA REQ CLEAR
    MM BORE
    VAR !BPSPEC PSPEC OF PIPE
    VAR !BLBOO LBORE
    !BBO = !BLBOO.REAL()
    VAR !BP PL OD
    !BPL = !BP.REAL() / 2

    IF(INTH GE 0) THEN
    !BINSUL = INTH / 2
    ELSEIF(INTHEQ 0) THEN
    !BINSUL = 0
    ENDIF

    IF(MATCHWILD(NAME OF SPREF OF $!REF,'*B*')EQ T)THEN
    !ARATING = '150'
    ELSEIF(MATCHWILD(NAME OF SPREF OF $!REF,'*D*')EQ T)THEN
    !ARATING = '300'
    ELSEIF(MATCHWILD(NAME OF SPREF OF $!REF,'*F*')EQ T)THEN
    !ARATING = '600'
    ELSEIF(MATCHWILD(NAME OF SPREF OF $!REF,'*G*')EQ T)THEN
    !ARATING = '900'
    ELSEIF(MATCHWILD(NAME OF SPREF OF $!REF,'*H*')EQ T)THEN
    !ARATING = '1500'
    ELSEIF(MATCHWILD(NAME OF SPREF OF $!REF,'*J*')EQ T)THEN
    !ARATING = '2500'
    ELSE
    !ARATING = ''
    ENDIF

    VAR !A COLL ALL SPCO WITH SPRA PBOR EQ $!ALBOO AND (MATCHW(STYPE,'*Flange*') EQ T) AND (MATCHW(STYPE,'*Reducing*') EQ F) AND (MATCHW(STYPE,'*Blind*') EQ F) AND (MATCHW(DTXR,'*$!ARATING*') EQ T) FOR $!APSPEC
    DO !B FROM 1 TO !A.SIZE()
    $!A[$!B]
    !APARAMF = PARAM[7]
    !APARAM = PARAM[7] / 2
    ENDDO

    !APIPE = $!APARAM + $!AINSUL

    IF(MATCHWILD(NAME OF SPREF OF $!BREF,'*B*')EQ T)THEN
    !BRATING = '150'
    ELSEIF(MATCHWILD(NAME OF SPREF OF $!BREF,'*D*')EQ T)THEN
    !BRATING = '300'
    ELSEIF(MATCHWILD(NAME OF SPREF OF $!BREF,'*F*')EQ T)THEN
    !BRATING = '600'
    ELSEIF(MATCHWILD(NAME OF SPREF OF $!BREF,'*G*')EQ T)THEN
    !BRATING = '900'
    ELSEIF(MATCHWILD(NAME OF SPREF OF $!BREF,'*H*')EQ T)THEN
    !BRATING = '1500'
    ELSEIF(MATCHWILD(NAME OF SPREF OF $!BREF,'*J*')EQ T)THEN
    !BRATING = '2500'
    ELSE
    !BRATING = ''
    ENDIF

    VAR !C COLL ALL SPCO WITH SPRA PBOR EQ $!BLBOO AND (MATCHW(STYPE,'*Flange*') EQ T) AND (MATCHW(STYPE,'*Reducing*') EQ F) AND (MATCHW(STYPE,'*Blind*') EQ F) AND (MATCHW(DTXR,'*$!BRATING*') EQ T) FOR $!BPSPEC
    DO !D FROM 1 TO !C.SIZE()
    $!C[$!D]
    !BPARAMF = PARAM[7]
    !BPARAM = PARAM[7] / 2
    ENDDO
    !BPIPE = $!BPARAM + $!BINSUL

    !CLEAREANCE = !this.clearDIST.val

    !space = $!APIPE + $!CLEAREANCE + $!BPIPE

    !SPC =!SPACE.REAL()
    !THIS.DIST.VAL = |$!SPC|
    ALPHA REQ CLEAR
    $P Actual $!space