• HI YKSAWANTH143 i am searching for the same solution, if get means please share it to me

    thanks in advance
  •  

    ------------------------------------------------------------------------
    -- Copyright (c) Cadcentre 1999
    --
    -- File:            TpArrowFlow.pmlfnc
    --   Type:          Function Definition
    --   Group:         <group>
    --     Keyword:     <keyword>
    --   Module:        Draft
    --
    -- Author:          Michel Decan - Alain Saudemont
    -- Created:         24 Juin 2004
    --
    -- Last modified by $Author$ on $Date$
    --                  $Revision$
    --
    -- Description:
    -- Create the arrow on the pipe to define the flow direction
    -- METHODOLOGY:
    -- Params[1] name of symbol
    -- Params[2] Scale of the symbol
    -- Params[3] Lenght mini of Tubi
    -------------------------------------------------------------------------
    -- ASSUMPTIONS:
    -- That the View is the current element
    --
    -- Arguments: None
    -------------------------------------------------------------------------
    -- define function !!TpArrowFlowAR(!param1 is DBREF,!param2 is REAL,!param3 is REAL)
    
    !SymbName =  /SP-Lib_Symb_2D/SLOPE/ARROW
    !SymbScal = 1
    !SymbLeng = 10
    var !units units
    IF !units.match('INC') gt 0 then
     mm dist mm bore
    ENDIF
    
    -- Declaration des variables tableau
    !MESREFNO  = ARRAY()
    !MESORI    = ARRAY()
    !VIEWPOS   = ARRAY()
    !VPOSSTART = ARRAY()
    !VPOSEND   = ARRAY()
    !INVIEW    = ARRAY()
    
    !cview = !!ce.name
    
    -- Collect tout les tubi qui sont contenu dans la vue
    var !MesTubi VSCAN FOR ALL TUBI
    
    -- Recuperation du refno
    DO !INDEX INDEX !MesTubI
        !MESREFNO.APPEND(AFTER(!MesTubi[$!INDEX],'TUBI '))
    ENDDO 
    
    --VAR !ORIENT RAW EVAL (ORI OF NEXT TUBI) FOR ALL FROM !MESREFNO  ignore any |0|
    
    VAR !POSTUBI  RAW EVAL (ITPOS OF NEXT TUBI WRT WORLD) FOR ALL FROM !MESREFNO  ignore any ||
    VAR !POSSTART RAW EVAL (P1POS OF NEXT TUBI WRT WORLD) FOR ALL FROM !MESREFNO  ignore any ||
    VAR !POSEND   RAW EVAL (P2POS OF NEXT TUBI WRT WORLD) FOR ALL FROM !MESREFNO  ignore any ||
    
    
    DO !INDEX INDEX !POSTUBI
        IF (|$!POSTUBI[$!INDEX]| NEQ ||) THEN
          VAR !VIEWPOS[$!INDEX] SHPOS OF $!POSTUBI[$!INDEX]
          VAR !INVIEW[$!INDEX] VSIDE OF $!POSTUBI[$!INDEX]
        ELSE
          VAR !VIEWPOS[$!INDEX] ||
          VAR !INVIEW[$!INDEX]  |1 2 3|
        ENDIF
    
        IF (|$!POSSTART[$!INDEX]| NEQ ||) THEN
          VAR !VPOSSTART[$!INDEX] SHPOS OF $!POSSTART[$!INDEX]
        ELSE
          VAR !VPOSSTART[$!INDEX] ||
        ENDIF
    
        IF (|$!POSEND[$!INDEX]| NEQ ||) THEN
          VAR !VPOSEND[$!INDEX] SHPOS OF $!POSEND[$!INDEX]
        ELSE
          VAR !VPOSEND[$!INDEX] ||
        ENDIF
    
    ENDDO 
    
    -- AFFICHAGE DES VARIABLES
    --Q VAR !POSSTART
    --Q VAR !POSEND
    --Q VAR !ORIENT
    --Q VAR !POSTUBI
    --Q VAR !VIEWPOS
    --Q VAR !VPOSSTART
    --Q VAR !VPOSEND
    --Q VAR !INVIEW
    
    -- Positionnement sur le Layer des Flow Arrow
      !layername = !cview & '/FlowArrow'
      !!ce = !layername.dbref()
      handle any
       new layer $!layername after last meM
       alignment hb
       ucode $!units
      elsehandle none
       delete layer mem
      endhandle
       new vnote $!layername/VNOTE 
    
    DO !INDSTAR INDEX !VIEWPOS
    
     IF (!INVIEW[$!INDSTAR].SPLIT()[3] EQ |Inside|) THEN
        IF (|$!VIEWPOS[$!INDSTAR]| NEQ ||) THEN
           NEW STRA
           FPT Offset $!VPOSSTART[$!INDSTAR]
           TPT Offset $!VPOSEND[$!INDSTAR]
           nlpn 1
           var !lenstra length
           IF ($!lenstra gt $!SymbLeng) then
              VAR !ANGLESTRA ADEG
              DELETE STRA
              new symb
              TMRF $!SymbName
              Xyscale $!SymbScal $!SymbScal
              ADEG $!ANGLESTRA
              AT $!VIEWPOS[$!INDSTAR]
           ELSE
              DELETE STRA
           ENDIF
        ENDIF
     ENDIF
    
    ENDDO
    
    
       UNITS !units  
    
    endfunction
    
    
    

  • Hello!
    This is good function, but it works for a one time. If flow changes in Model, arrows doesn't rotate in Draw. It need to delete layer and start function once again.