Télécharger @repere.procedur

Retour à la liste

Numérotation des lignes :

  1. * @REPERE PROCEDUR GOUNAND 17/01/11 21:15:00 9272
  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 d'operateurs
  12. * entre quotes).
  13. *
  14. * ENTREES
  15. * =======
  16. * ORI1 POINT origine du repere
  17. * => (0. 0. (0.)) par defaut
  18. *
  19. * TAIL0 LISTREEL tailles en X,Y(,Z) du repere
  20. * => (PROG 1. 1. (1.)) par defaut
  21. *
  22. * NOM1 LOGIQUE VRAI pour nommer les axes
  23. * => VRAI par defaut
  24. *
  25. * COUL1 MOT couleur du repere
  26. * => DEFA par defaut
  27. *
  28. * SORTIE
  29. * ======
  30. * RP1 MAILLAGE du repere
  31. *
  32. * ======================================================================
  33. ELE1 = 'VALE' 'ELEM' ;
  34. IDI1 = 'VALE' 'DIME' ;
  35.  
  36. 'SI' (IDI1 '<' 2) ;
  37. 'ERRE' 'POUR TRACER LE REPERE IL FAUT ETRE EN DIMENSION 2 OU 3' ;
  38. 'FINSI' ;
  39.  
  40. * VALEURS PAR DEFAUT
  41. * ==================
  42.  
  43. 'SI' (IDI1 'EGA' 2) ;
  44. 'SI' ('NON' ('EXIS' ORI1)) ; ORI1 = 0. 0. ; 'FINSI' ;
  45. 'SI' ('NON' ('EXIS' TAI0)) ; TAI0 = 'PROG' 1. 1. ; 'FINSI' ;
  46. 'SINON' ;
  47. 'SI' ('NON' ('EXIS' ORI1)) ; ORI1 = 0. 0. 0. ; 'FINSI' ;
  48. 'SI' ('NON' ('EXIS' TAI0)) ; TAI0 = 'PROG' 1. 1. 1. ; 'FINSI' ;
  49. 'FINS' ;
  50. 'SI' ('NON' ('EXIS' NOM1)) ; NOM1 = VRAI ; 'FINSI' ;
  51. 'SI' ('NON' ('EXIS' COU1)) ; COU1 = 'DEFA' ; 'FINSI' ;
  52.  
  53. LTA0 = 'DIME' TAI0 ;
  54. 'SI' ('NON' ('MULT' LTA0 IDI1)) ;
  55. 'SI' (IDI1 'EGA' 2) ;
  56. 'ERRE' 'TAIL0 DOIT CONTENIR 2, 4 OU 6 VALEURS' ;
  57. 'SINON' ;
  58. 'ERRE' 'TAIL0 DOIT CONTENIR 3, 6 OU 9 VALEURS' ;
  59. 'FINSI' ;
  60. 'FINSI' ;
  61.  
  62.  
  63. * VECTEURS DES 2 OU 3 DIRECTIONS
  64. * ==============================
  65.  
  66. * axe de la fleche
  67. * ****************
  68. TAIL1 = 'EXTR' TAI0 1 ;
  69. TAIL2 = 'EXTR' TAI0 2 ;
  70. 'SI' (IDI1 'EGA' 3) ;
  71. TAIL3 = 'EXTR' TAI0 3 ;
  72. 'FINS' ;
  73. D1 = ('MINI' ('EXTR' TAI0 ('LECT' 1 'PAS' 1 IDI1))) '/' 20. ;
  74. D2 = -1. '*' D1 ;
  75.  
  76. 'SI' (IDI1 'EGA' 2) ;
  77. X = ORI1 'PLUS' (TAIL1 0.) ;
  78. Y = ORI1 'PLUS' (0. TAIL2) ;
  79. RP1 = ('MANU' 'SEG2' ORI1 X) 'ET'
  80. ('MANU' 'SEG2' ORI1 Y) ;
  81. 'SINON' ;
  82. X = ORI1 'PLUS' (TAIL1 0. 0.) ;
  83. Y = ORI1 'PLUS' (0. TAIL2 0.) ;
  84. Z = ORI1 'PLUS' (0. 0. TAIL3) ;
  85. RP1 = ('MANU' 'SEG2' ORI1 X) 'ET'
  86. ('MANU' 'SEG2' ORI1 Y) 'ET'
  87. ('MANU' 'SEG2' ORI1 Z) ;
  88. 'FINS' ;
  89.  
  90. * tete de la fleche
  91. * *****************
  92. 'SI' (LTA0 '>' IDI1) ;
  93. D1 = ('MINI' ('EXTR' TAI0
  94. ('LECT' (IDI1 '+' 1) 'PAS' 1 (2 '*' IDI1))))
  95. '/' 20. ;
  96. D2 = -1. '*' D1 ;
  97. 'FINS' ;
  98.  
  99. 'SI' (IDI1 'EGA' 2) ;
  100. RP1 = RP1 'ET' ('MANU' 'SEG2' X (X 'PLUS' (D2 D1))) 'ET'
  101. ('MANU' 'SEG2' X (X 'PLUS' (D2 D2)))
  102. 'ET' ('MANU' 'SEG2' Y (Y 'PLUS' (D1 D2))) 'ET'
  103. ('MANU' 'SEG2' Y (Y 'PLUS' (D2 D2))) ;
  104. 'SINON' ;
  105. RP1 = RP1 'ET' ('MANU' 'SEG2' X (X 'PLUS' (D2 0. D1))) 'ET'
  106. ('MANU' 'SEG2' X (X 'PLUS' (D2 0. D2)))
  107. 'ET' ('MANU' 'SEG2' Y (Y 'PLUS' (0. D2 D1))) 'ET'
  108. ('MANU' 'SEG2' Y (Y 'PLUS' (0. D2 D2)))
  109. 'ET' ('MANU' 'SEG2' Z (Z 'PLUS' (D1 0. D2))) 'ET'
  110. ('MANU' 'SEG2' Z (Z 'PLUS' (D2 0. D2))) ;
  111. 'FINS' ;
  112.  
  113.  
  114. * NOMS DES 2 OU 3 DIRECTIONS
  115. * ==========================
  116. 'SI' (LTA0 '>' (2 '*' IDI1)) ;
  117. D1 = ('MINI' ('EXTR' TAI0
  118. ('LECT' ((2 '*' IDI1) '+' 1) 'PAS' 1 (3 '*' IDI1))))
  119. '/' 20. ;
  120. D2 = -1. '*' D1 ;
  121. 'FINS' ;
  122.  
  123. 'SI' (NOM1);
  124. 'SI' (IDI1 'EGA' 2) ;
  125. NOMX = ('MANU' 'SEG2' (X 'PLUS' ( D1 D1 ))
  126. (X 'PLUS' (( 2.*D1) (-1.*D1))) ) 'ET'
  127. ('MANU' 'SEG2' (X 'PLUS' ( D1 (-1.*D1)))
  128. (X 'PLUS' (( 2.*D1) D1 )) ) ;
  129. NOMY = ('MANU' 'SEG2' (Y 'PLUS' ((0.6*D1) ( 3.*D1)))
  130. (Y 'PLUS' ( 0. ( 2.*D1))) ) 'ET'
  131. ('MANU' 'SEG2' (Y 'PLUS' ((0.6*D2) ( 3.*D1)))
  132. (Y 'PLUS' ( 0. ( 2.*D1))) ) 'ET'
  133. ('MANU' 'SEG2' (Y 'PLUS' ( 0. D1 ))
  134. (Y 'PLUS' ( 0. ( 2.*D1))) ) ;
  135. RP1 = RP1 'ET' NOMX 'ET' NOMY ;
  136. 'SINON' ;
  137. NOMX = ('MANU' 'SEG2' (X 'PLUS' (D1 0. D1))
  138. (X 'PLUS' ((2.*D1) 0. (-1.*D1)))) 'ET'
  139. ('MANU' 'SEG2' (X 'PLUS' (D1 0. (-1.*D1)))
  140. (X 'PLUS' ((2.*D1) 0. D1))) ;
  141. NOMY = ('MANU' 'SEG2' (Y 'PLUS' (0. D1 D1))
  142. (Y 'PLUS' (0. (1.5*D1) 0.))) 'ET'
  143. ('MANU' 'SEG2' (Y 'PLUS' (0. D1 (-1.*D1)))
  144. (Y 'PLUS' (0. (2.*D1) D1))) ;
  145. NOMZ = ('MANU' 'SEG2' (Z 'PLUS' ((-0.5*D1) 0. D1))
  146. (Z 'PLUS' (( 0.5*D1) 0. D1 ))) 'ET'
  147. ('MANU' 'SEG2' (Z 'PLUS' (( 0.5*D1) 0. D1))
  148. (Z 'PLUS' ((-0.5*D1) 0. (2.*D1)))) 'ET'
  149. ('MANU' 'SEG2' (Z 'PLUS' ((-0.5*D1) 0. (2.*D1)))
  150. (Z 'PLUS' (( 0.5*D1) 0. (2.*D1)))) ;
  151. RP1 = RP1 'ET' NOMX 'ET' NOMY 'ET' NOMZ ;
  152. 'FINS' ;
  153. 'FINSI' ;
  154. RP1 = 'COUL' RP1 COU1 ;
  155.  
  156. 'FINPROC' RP1 ;
  157.  
  158.  
  159.  
  160.  

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