* @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
*
* ======================================================================
'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'
;
'
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
* ****************
'SI' (IDI1 'EGA' 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'
'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'
'FINS' ;
* tete de la fleche
* *****************
'SI' (LTA0 '>' IDI1) ;
('
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'
'
ET'
('
MANU' 'SEG2' Y
(Y '
PLUS'
(D1 D2
))) '
ET'
'SINON' ;
RP1
= RP1 '
ET'
('
MANU' 'SEG2' X
(X '
PLUS'
(D2
0.
D1))) '
ET'
'
ET'
('
MANU' 'SEG2' Y
(Y '
PLUS'
(0.
D2 D1
))) '
ET'
'
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)) ;
('
LECT'
((2 '
*' IDI1
) '
+'
1) 'PAS'
1 (3 '
*' IDI1
)))) '/' 20. ;
D2 = -1. '*' D1 ;
'FINS' ;
'SI' (NOM1);
'SI' (IDI1 'EGA' 2) ;
'SI' ('EGA' vmod 'AXIS') ;
p2
= X '
PLUS'
(D1
0.
) ; p1
= p2 '
PLUS'
(0.
D2) ; p4
= '
PLUS' p3
(('
*' D1
0.5) 0.
) ; p5
= '
PLUS' p4
(('
*' D1
0.5) ('
*' D1
-0.5)) ; p6
= '
PLUS' p2
(('
*' D1
0.5) 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'
(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' ;
'FINPROC' RP1 ;