------------------------------------------------------------------------ -- 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
------------------------------------------------------------------------ -- 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