Télécharger @repere.procedur

Retour à la liste

Numérotation des lignes :

  1. * @REPERE PROCEDUR GOUNAND 18/12/11 21:15:01 10036
  2. 'DEBPROC' @REPERE ORI1/'POINT' TAI0/'LISTREEL'
  3. NOM1/'LOGIQUE' COU1/'MOT' ;
  4. * ======================================================================
  5. * PROCEDURE POUR LA CONSTRUCTION D'UN REPERE X Y (Z)
  6. * CHAMPANEY Laurent L.M.T. STRUCTURES et CMAO le 24 / 04 / 95
  7. * JCARDO 19/02/2015 possibilite d'utiliser la procedure en 2D
  8. * S Gounand 05/01/2017 Mettre la couleur DEFA au lieu de BLAN par
  9. * defaut
  10. * Enlever la verif sur les couleurs
  11. * Rendre "robuste" la procedure (nom
  12. * d'operateurs entre quotes).
  13. * S Gounand 20/11/2018 Nommer les axes R, Z au lieu de X, Y en mode
  14. * axisymétrique
  15. * ENTREES
  16. * =======
  17. * ORI1 POINT origine du repere
  18. * => (0. 0. (0.)) par defaut
  19. *
  20. * TAIL0 LISTREEL tailles en X,Y(,Z) du repere
  21. * => (PROG 1. 1. (1.)) par defaut
  22. *
  23. * NOM1 LOGIQUE VRAI pour nommer les axes
  24. * => VRAI par defaut
  25. *
  26. * COUL1 MOT couleur du repere
  27. * => DEFA par defaut
  28. *
  29. * SORTIE
  30. * ======
  31. * RP1 MAILLAGE du repere
  32. *
  33. * ======================================================================
  34. ELE1 = 'VALE' 'ELEM' ;
  35. IDI1 = 'VALE' 'DIME' ;
  36.  
  37. 'SI' (IDI1 '<' 2) ;
  38. 'ERRE' 'POUR TRACER LE REPERE IL FAUT ETRE EN DIMENSION 2 OU 3' ;
  39. 'FINSI' ;
  40.  
  41. * VALEURS PAR DEFAUT
  42. * ==================
  43.  
  44. 'SI' (IDI1 'EGA' 2) ;
  45. 'SI' ('NON' ('EXIS' ORI1)) ; ORI1 = 0. 0. ; 'FINSI' ;
  46. 'SI' ('NON' ('EXIS' TAI0)) ; TAI0 = 'PROG' 1. 1. ; 'FINSI' ;
  47. 'SINON' ;
  48. 'SI' ('NON' ('EXIS' ORI1)) ; ORI1 = 0. 0. 0. ; 'FINSI' ;
  49. 'SI' ('NON' ('EXIS' TAI0)) ; TAI0 = 'PROG' 1. 1. 1. ; 'FINSI' ;
  50. 'FINS' ;
  51. 'SI' ('NON' ('EXIS' NOM1)) ; NOM1 = VRAI ; 'FINSI' ;
  52. 'SI' ('NON' ('EXIS' COU1)) ; COU1 = 'DEFA' ; 'FINSI' ;
  53.  
  54. LTA0 = 'DIME' TAI0 ;
  55. 'SI' ('NON' ('MULT' LTA0 IDI1)) ;
  56. 'SI' (IDI1 'EGA' 2) ;
  57. 'ERRE' 'TAIL0 DOIT CONTENIR 2, 4 OU 6 VALEURS' ;
  58. 'SINON' ;
  59. 'ERRE' 'TAIL0 DOIT CONTENIR 3, 6 OU 9 VALEURS' ;
  60. 'FINSI' ;
  61. 'FINSI' ;
  62.  
  63.  
  64. * VECTEURS DES 2 OU 3 DIRECTIONS
  65. * ==============================
  66.  
  67. * axe de la fleche
  68. * ****************
  69. TAIL1 = 'EXTR' TAI0 1 ;
  70. TAIL2 = 'EXTR' TAI0 2 ;
  71. 'SI' (IDI1 'EGA' 3) ;
  72. TAIL3 = 'EXTR' TAI0 3 ;
  73. 'FINS' ;
  74. D1 = ('MINI' ('EXTR' TAI0 ('LECT' 1 'PAS' 1 IDI1))) '/' 20. ;
  75. D2 = -1. '*' D1 ;
  76.  
  77. 'SI' (IDI1 'EGA' 2) ;
  78. X = ORI1 'PLUS' (TAIL1 0.) ;
  79. Y = ORI1 'PLUS' (0. TAIL2) ;
  80. RP1 = ('MANU' 'SEG2' ORI1 X) 'ET'
  81. ('MANU' 'SEG2' ORI1 Y) ;
  82. 'SINON' ;
  83. X = ORI1 'PLUS' (TAIL1 0. 0.) ;
  84. Y = ORI1 'PLUS' (0. TAIL2 0.) ;
  85. Z = ORI1 'PLUS' (0. 0. TAIL3) ;
  86. RP1 = ('MANU' 'SEG2' ORI1 X) 'ET'
  87. ('MANU' 'SEG2' ORI1 Y) 'ET'
  88. ('MANU' 'SEG2' ORI1 Z) ;
  89. 'FINS' ;
  90.  
  91. * tete de la fleche
  92. * *****************
  93. 'SI' (LTA0 '>' IDI1) ;
  94. D1 = ('MINI' ('EXTR' TAI0
  95. ('LECT' (IDI1 '+' 1) 'PAS' 1 (2 '*' IDI1))))
  96. '/' 20. ;
  97. D2 = -1. '*' D1 ;
  98. 'FINS' ;
  99.  
  100. 'SI' (IDI1 'EGA' 2) ;
  101. RP1 = RP1 'ET' ('MANU' 'SEG2' X (X 'PLUS' (D2 D1))) 'ET'
  102. ('MANU' 'SEG2' X (X 'PLUS' (D2 D2)))
  103. 'ET' ('MANU' 'SEG2' Y (Y 'PLUS' (D1 D2))) 'ET'
  104. ('MANU' 'SEG2' Y (Y 'PLUS' (D2 D2))) ;
  105. 'SINON' ;
  106. RP1 = RP1 'ET' ('MANU' 'SEG2' X (X 'PLUS' (D2 0. D1))) 'ET'
  107. ('MANU' 'SEG2' X (X 'PLUS' (D2 0. D2)))
  108. 'ET' ('MANU' 'SEG2' Y (Y 'PLUS' (0. D2 D1))) 'ET'
  109. ('MANU' 'SEG2' Y (Y 'PLUS' (0. D2 D2)))
  110. 'ET' ('MANU' 'SEG2' Z (Z 'PLUS' (D1 0. D2))) 'ET'
  111. ('MANU' 'SEG2' Z (Z 'PLUS' (D2 0. D2))) ;
  112. 'FINS' ;
  113.  
  114.  
  115. * NOMS DES 2 OU 3 DIRECTIONS
  116. * ==========================
  117. 'SI' (LTA0 '>' (2 '*' IDI1)) ;
  118. D1 = ('MINI' ('EXTR' TAI0
  119. ('LECT' ((2 '*' IDI1) '+' 1) 'PAS' 1 (3 '*' IDI1))))
  120. '/' 20. ;
  121. D2 = -1. '*' D1 ;
  122. 'FINS' ;
  123.  
  124. 'SI' (NOM1);
  125. 'SI' (IDI1 'EGA' 2) ;
  126. vmod = 'VALE' 'MODE' ;
  127. 'SI' ('EGA' vmod 'AXIS') ;
  128. p2 = X 'PLUS' (D1 0.) ; p1 = p2 'PLUS' (0. D2) ;
  129. p3 = p2 'PLUS' (0. D1) ;
  130. p4 = 'PLUS' p3 (('*' D1 0.5) 0.) ;
  131. p5 = 'PLUS' p4 (('*' D1 0.5) ('*' D1 -0.5)) ;
  132. p6 = 'PLUS' p2 (('*' D1 0.5) 0.) ;
  133. p7 = 'PLUS' p1 (D1 0.) ;
  134. NOMR = ('QUEL' 'SEG2' p1 p2 p3 p4) 'ET'
  135. ('CER3' 10 p4 p5 p6) 'ET'
  136. ('QUEL' 'SEG2' p2 p6 p7) ;
  137. p1 = 'PLUS' Y (('*' D1 -0.6) ('*' D1 3.)) ;
  138. p2 = 'PLUS' Y (('*' D1 +0.6) ('*' D1 3.)) ;
  139. p3 = 'PLUS' Y (('*' D1 -0.6) ('*' D1 1.)) ;
  140. p4 = 'PLUS' Y (('*' D1 +0.6) ('*' D1 1.)) ;
  141. NOMZ = 'QUEL' 'SEG2' p1 p2 p3 p4 ;
  142. RP1 = RP1 'ET' NOMR 'ET' NOMZ ;
  143. 'SINO' ;
  144. NOMX = ('MANU' 'SEG2' (X 'PLUS' ( D1 D1 ))
  145. (X 'PLUS' (( 2.*D1) (-1.*D1))) ) 'ET'
  146. ('MANU' 'SEG2' (X 'PLUS' ( D1 (-1.*D1)))
  147. (X 'PLUS' (( 2.*D1) D1 )) ) ;
  148. NOMY = ('MANU' 'SEG2' (Y 'PLUS' ((0.6*D1) ( 3.*D1)))
  149. (Y 'PLUS' ( 0. ( 2.*D1))) ) 'ET'
  150. ('MANU' 'SEG2' (Y 'PLUS' ((0.6*D2) ( 3.*D1)))
  151. (Y 'PLUS' ( 0. ( 2.*D1))) ) 'ET'
  152. ('MANU' 'SEG2' (Y 'PLUS' ( 0. D1 ))
  153. (Y 'PLUS' ( 0. ( 2.*D1))) ) ;
  154. RP1 = RP1 'ET' NOMX 'ET' NOMY ;
  155. 'FINS' ;
  156. 'SINON' ;
  157. NOMX = ('MANU' 'SEG2' (X 'PLUS' (D1 0. D1))
  158. (X 'PLUS' ((2.*D1) 0. (-1.*D1)))) 'ET'
  159. ('MANU' 'SEG2' (X 'PLUS' (D1 0. (-1.*D1)))
  160. (X 'PLUS' ((2.*D1) 0. D1))) ;
  161. NOMY = ('MANU' 'SEG2' (Y 'PLUS' (0. D1 D1))
  162. (Y 'PLUS' (0. (1.5*D1) 0.))) 'ET'
  163. ('MANU' 'SEG2' (Y 'PLUS' (0. D1 (-1.*D1)))
  164. (Y 'PLUS' (0. (2.*D1) D1))) ;
  165. NOMZ = ('MANU' 'SEG2' (Z 'PLUS' ((-0.5*D1) 0. D1))
  166. (Z 'PLUS' (( 0.5*D1) 0. D1 ))) 'ET'
  167. ('MANU' 'SEG2' (Z 'PLUS' (( 0.5*D1) 0. D1))
  168. (Z 'PLUS' ((-0.5*D1) 0. (2.*D1)))) 'ET'
  169. ('MANU' 'SEG2' (Z 'PLUS' ((-0.5*D1) 0. (2.*D1)))
  170. (Z 'PLUS' (( 0.5*D1) 0. (2.*D1)))) ;
  171. RP1 = RP1 'ET' NOMX 'ET' NOMY 'ET' NOMZ ;
  172. 'FINS' ;
  173. 'FINSI' ;
  174. RP1 = 'COUL' RP1 COU1 ;
  175.  
  176. 'FINPROC' RP1 ;
  177.  
  178.  
  179.  
  180.  
  181.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales