$$$$ @REPERE * @REPERE PROCEDUR GOUNAND 18/12/11 21:15:01 10036 'DEBPROC' @REPERE ORI1/'POINT' TAI0/'LISTREEL' NOM1/'LOGIQUE' COU1/'MOT' ; * ====================================================================== * PROCEDURE POUR LA CONSTRUCTION D'UN REPERE X Y (Z) * CHAMPANEY Laurent L.M.T. STRUCTURES et CMAO le 24 / 04 / 95 * JCARDO 19/02/2015 possibilite d'utiliser la procedure en 2D * S Gounand 05/01/2017 Mettre la couleur DEFA au lieu de BLAN par * defaut * Enlever la verif sur les couleurs * Rendre "robuste" la procedure (nom * d'operateurs entre quotes). * S Gounand 20/11/2018 Nommer les axes R, Z au lieu de X, Y en mode * axisymétrique * ENTREES * ======= * ORI1 POINT origine du repere * => (0. 0. (0.)) par defaut * * TAIL0 LISTREEL tailles en X,Y(,Z) du repere * => (PROG 1. 1. (1.)) par defaut * * NOM1 LOGIQUE VRAI pour nommer les axes * => VRAI par defaut * * COUL1 MOT couleur du repere * => DEFA par defaut * * SORTIE * ====== * RP1 MAILLAGE du repere * * ====================================================================== ELE1 = 'VALE' 'ELEM' ; IDI1 = 'VALE' 'DIME' ; 'SI' (IDI1 '<' 2) ; 'ERRE' 'POUR TRACER LE REPERE IL FAUT ETRE EN DIMENSION 2 OU 3' ; 'FINSI' ; * VALEURS PAR DEFAUT * ================== 'SI' (IDI1 'EGA' 2) ; 'SI' ('NON' ('EXIS' ORI1)) ; ORI1 = 0. 0. ; 'FINSI' ; 'SI' ('NON' ('EXIS' TAI0)) ; TAI0 = 'PROG' 1. 1. ; 'FINSI' ; 'SINON' ; 'SI' ('NON' ('EXIS' ORI1)) ; ORI1 = 0. 0. 0. ; 'FINSI' ; 'SI' ('NON' ('EXIS' TAI0)) ; TAI0 = 'PROG' 1. 1. 1. ; 'FINSI' ; 'FINS' ; 'SI' ('NON' ('EXIS' NOM1)) ; NOM1 = VRAI ; 'FINSI' ; 'SI' ('NON' ('EXIS' COU1)) ; COU1 = 'DEFA' ; 'FINSI' ; LTA0 = 'DIME' TAI0 ; 'SI' ('NON' ('MULT' LTA0 IDI1)) ; 'SI' (IDI1 'EGA' 2) ; 'ERRE' 'TAIL0 DOIT CONTENIR 2, 4 OU 6 VALEURS' ; 'SINON' ; 'ERRE' 'TAIL0 DOIT CONTENIR 3, 6 OU 9 VALEURS' ; 'FINSI' ; 'FINSI' ; * VECTEURS DES 2 OU 3 DIRECTIONS * ============================== * axe de la fleche * **************** TAIL1 = 'EXTR' TAI0 1 ; TAIL2 = 'EXTR' TAI0 2 ; 'SI' (IDI1 'EGA' 3) ; TAIL3 = 'EXTR' TAI0 3 ; 'FINS' ; D1 = ('MINI' ('EXTR' TAI0 ('LECT' 1 'PAS' 1 IDI1))) '/' 20. ; D2 = -1. '*' D1 ; 'SI' (IDI1 'EGA' 2) ; X = ORI1 'PLUS' (TAIL1 0.) ; Y = ORI1 'PLUS' (0. TAIL2) ; RP1 = ('MANU' 'SEG2' ORI1 X) 'ET' ('MANU' 'SEG2' ORI1 Y) ; 'SINON' ; X = ORI1 'PLUS' (TAIL1 0. 0.) ; Y = ORI1 'PLUS' (0. TAIL2 0.) ; Z = ORI1 'PLUS' (0. 0. TAIL3) ; RP1 = ('MANU' 'SEG2' ORI1 X) 'ET' ('MANU' 'SEG2' ORI1 Y) 'ET' ('MANU' 'SEG2' ORI1 Z) ; 'FINS' ; * tete de la fleche * ***************** 'SI' (LTA0 '>' IDI1) ; D1 = ('MINI' ('EXTR' TAI0 ('LECT' (IDI1 '+' 1) 'PAS' 1 (2 '*' IDI1)))) '/' 20. ; D2 = -1. '*' D1 ; 'FINS' ; 'SI' (IDI1 'EGA' 2) ; RP1 = RP1 'ET' ('MANU' 'SEG2' X (X 'PLUS' (D2 D1))) 'ET' ('MANU' 'SEG2' X (X 'PLUS' (D2 D2))) 'ET' ('MANU' 'SEG2' Y (Y 'PLUS' (D1 D2))) 'ET' ('MANU' 'SEG2' Y (Y 'PLUS' (D2 D2))) ; 'SINON' ; RP1 = RP1 'ET' ('MANU' 'SEG2' X (X 'PLUS' (D2 0. D1))) 'ET' ('MANU' 'SEG2' X (X 'PLUS' (D2 0. D2))) 'ET' ('MANU' 'SEG2' Y (Y 'PLUS' (0. D2 D1))) 'ET' ('MANU' 'SEG2' Y (Y 'PLUS' (0. D2 D2))) 'ET' ('MANU' 'SEG2' Z (Z 'PLUS' (D1 0. D2))) 'ET' ('MANU' 'SEG2' Z (Z 'PLUS' (D2 0. D2))) ; 'FINS' ; * NOMS DES 2 OU 3 DIRECTIONS * ========================== 'SI' (LTA0 '>' (2 '*' IDI1)) ; D1 = ('MINI' ('EXTR' TAI0 ('LECT' ((2 '*' IDI1) '+' 1) 'PAS' 1 (3 '*' IDI1)))) '/' 20. ; D2 = -1. '*' D1 ; 'FINS' ; 'SI' (NOM1); 'SI' (IDI1 'EGA' 2) ; vmod = 'VALE' 'MODE' ; 'SI' ('EGA' vmod 'AXIS') ; p2 = X 'PLUS' (D1 0.) ; p1 = p2 'PLUS' (0. D2) ; p3 = p2 'PLUS' (0. D1) ; p4 = 'PLUS' p3 (('*' D1 0.5) 0.) ; p5 = 'PLUS' p4 (('*' D1 0.5) ('*' D1 -0.5)) ; p6 = 'PLUS' p2 (('*' D1 0.5) 0.) ; p7 = 'PLUS' p1 (D1 0.) ; NOMR = ('QUEL' 'SEG2' p1 p2 p3 p4) 'ET' ('CER3' 10 p4 p5 p6) 'ET' ('QUEL' 'SEG2' p2 p6 p7) ; p1 = 'PLUS' Y (('*' D1 -0.6) ('*' D1 3.)) ; p2 = 'PLUS' Y (('*' D1 +0.6) ('*' D1 3.)) ; p3 = 'PLUS' Y (('*' D1 -0.6) ('*' D1 1.)) ; p4 = 'PLUS' Y (('*' D1 +0.6) ('*' D1 1.)) ; NOMZ = 'QUEL' 'SEG2' p1 p2 p3 p4 ; RP1 = RP1 'ET' NOMR 'ET' NOMZ ; 'SINO' ; NOMX = ('MANU' 'SEG2' (X 'PLUS' ( D1 D1 )) (X 'PLUS' (( 2.*D1) (-1.*D1))) ) 'ET' ('MANU' 'SEG2' (X 'PLUS' ( D1 (-1.*D1))) (X 'PLUS' (( 2.*D1) D1 )) ) ; NOMY = ('MANU' 'SEG2' (Y 'PLUS' ((0.6*D1) ( 3.*D1))) (Y 'PLUS' ( 0. ( 2.*D1))) ) 'ET' ('MANU' 'SEG2' (Y 'PLUS' ((0.6*D2) ( 3.*D1))) (Y 'PLUS' ( 0. ( 2.*D1))) ) 'ET' ('MANU' 'SEG2' (Y 'PLUS' ( 0. D1 )) (Y 'PLUS' ( 0. ( 2.*D1))) ) ; RP1 = RP1 'ET' NOMX 'ET' NOMY ; 'FINS' ; 'SINON' ; NOMX = ('MANU' 'SEG2' (X 'PLUS' (D1 0. D1)) (X 'PLUS' ((2.*D1) 0. (-1.*D1)))) 'ET' ('MANU' 'SEG2' (X 'PLUS' (D1 0. (-1.*D1))) (X 'PLUS' ((2.*D1) 0. D1))) ; NOMY = ('MANU' 'SEG2' (Y 'PLUS' (0. D1 D1)) (Y 'PLUS' (0. (1.5*D1) 0.))) 'ET' ('MANU' 'SEG2' (Y 'PLUS' (0. D1 (-1.*D1))) (Y 'PLUS' (0. (2.*D1) D1))) ; NOMZ = ('MANU' 'SEG2' (Z 'PLUS' ((-0.5*D1) 0. D1)) (Z 'PLUS' (( 0.5*D1) 0. D1 ))) 'ET' ('MANU' 'SEG2' (Z 'PLUS' (( 0.5*D1) 0. D1)) (Z 'PLUS' ((-0.5*D1) 0. (2.*D1)))) 'ET' ('MANU' 'SEG2' (Z 'PLUS' ((-0.5*D1) 0. (2.*D1))) (Z 'PLUS' (( 0.5*D1) 0. (2.*D1)))) ; RP1 = RP1 'ET' NOMX 'ET' NOMY 'ET' NOMZ ; 'FINS' ; 'FINSI' ; RP1 = 'COUL' RP1 COU1 ; 'FINPROC' RP1 ;