Bonjour,
Je suis en train de développer un petit programme LISP permettant d’espacer des barres d’aciers dans une poutre.

La première partie dessine le contour de la poutre (Jusque là tout va bien)

La seconde partie je voudrai copier la barre d’acier dessiné à la distance « e1 » que je viens de rentrer.
sauf que j’aimerai que la copie se face sur un plan horizontal sur la droite…


Voici mon programme, la seconde partie débute avec la fonction « While »

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
(defun c:POUTRE()
 
 
 
  (setvar "osmode" 0)
  (command "ortho actif")	
  (setvar "cmdecho" 0)
 
  	(setq P1 (getpoint "\n Cliquer sur le point d'insertion de la poutre"))
 
  	(setq d1 (getdist "\n Donner la largeur en cm de l'appui gauche"))
 
  	(setq d2 (getdist "\n Donner la largeur en cm de l'appui droit"))
 
  	(setq d3 (getdist "\n Donner la hauteur en cm de la poutre"))
 
  	(setq d4 (getdist "\n Donner la portée de la poutre"))
 
	(setq d5 (getdist "\n Donner l'enrobage des aciers "))
 
 
 
  ;Place les points du contour extérieur de la poutre
 
  	(setq P2 (polar P1 (/ pi 2) (+ d3 150)))
	(setq P3 (polar P2 0 (+ d1 (+ d2 d4))))
  	(setq P4 (polar P3 (- (/ pi 2)) (+ d3 150)))
 
  ;Place les points du contour intérieur de la poutre
 
	(setq P5 (polar P1 0 d1))
	(setq P6 (polar P5 (/ pi 2) 150))
  	(setq P7 (polar P6 0 d4))
	(setq P8 (polar p7 (- (/ pi 2)) 150))
 
  ;Dessine les barres
 
 
	(command "calque" "E" "01 BA Coupe" "CO" "U" "255, 0, 255" "" "TL" "Continuous" "" "")
  	(command "_pline" P1 P2 P3 P4 "")
 
	(command "_pline" P5 P6 P7 P8 "")
 
 
	(command "calque" "E" "01 BA Fer" "CO" "U" "255, 255, 255" "" "TL" "Continuous" "" "")
	(setq d6 (getdist "\n Donner l'espacement au nu de l'appui gauche "))
 
 	(setq P9  (polar P6 (/ pi 2) d5))
	(setq P10 (polar P9 0 d6 ))	
	(setq P11 (polar P10 (/ pi 2) (- d3 (+ d5 d5))))
  	(setq Pb  (polar P10 0 1))
 
  	(setq b1  (command "_pline" P10 P11 ""))
 
  (while (or (= rep "O")(= rep "OUI"))
(setq e1 (getdist "\n Donner l'espacement "))
  	(command "_copy" "d" "" 0 e1  ""))
 
)

Exemple Ordre de grandeur pour faire marcher le programme :

Donner la largeur en cm de l'appui gauche : 20 (cm)

Donner la largeur en cm de l'appui droit : 20 (cm)

Donner la hauteur en cm de la poutre : 60 (cm)

Donner la portée de la poutre : 450 (cm)

Donner l'enrobage des aciers : 3 (cm)

Donner l'espacement au nu de l'appui gauche : 5 (cm)

Donner l'espacement : 20 (cm)


Si quelqu’un pouvait m’aider…