-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkaltitude_points_intermédiaire.lsp
117 lines (99 loc) · 3.17 KB
/
kaltitude_points_intermédiaire.lsp
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
(defun C:kaltitude_points_intermediaire ()
(defun AuCarre (asdf) (* asdf asdf))
(defun Distance (qwertz1 qwertz2) (sqrt (+ (AuCarre (- (car qwertz1) (car qwertz2))) (AuCarre (- (cadr qwertz1) (cadr qwertz2))))))
(defun Angle (yxcv1 yxcv2) (atan (- (cadr yxcv2) (cadr yxcv1)) (- (car yxcv2) (car yxcv1))))
(setq int 1)
(while (< int 5)
(if (= int 1)
(progn
(setq TexteP1 "\nChoisissez le premier point: ")
(initget 1)
(setq P1 (getpoint TexteP1))
(setq int (+ int 1))
(prompt (strcat
"\nAltitude du premier point : "
(rtos (caddr P1) 2 3)
))
)
)
(if (= int 2)
(progn
(setq TexteP2 "\nChoisissez le deuxième point ou [annUler] (retour au premier point) ")
(initget 1 "annUler")
(setq P2 (getpoint P1 TexteP2))
(if (= P2 "annUler")
(setq int (- int 1))
(progn
(setq int (+ int 1))
(prompt (strcat
"\nAltitude du deuxième point : "
(rtos (caddr P2) 2 3)
))
)
)
)
)
(if (= int 3)
(progn
(setq TexteP3 "\nChoisissez un point intérmédiaire ou [annUler] (retour au deuxième point) ")
(initget 1 "annUler")
(setq P3Temp (getpoint TexteP3))
(if (= P3Temp "annUler")
(setq int (- int 1))
(progn
(setq int (+ int 1))
(setq
DifferenceAltitudeP2_P1 (- (caddr P2) (caddr P1))
DistanceP2_P1 (distance P2 P1)
DistanceP2_P3Temp (Distance P2 P3Temp)
AngleP2_P1 (Angle P2 P1)
AngleP2_P3Temp (Angle P2 P3Temp)
AngleSommetP2 (- AngleP2_P1 AngleP2_P3Temp)
DistanceP2_P3Final (* (cos AngleSommetP2) DistanceP2_P3Temp)
P3Final (polar P2 AngleP2_P1 DistanceP2_P3Final)
P3Final (list (car P3Final) (cadr P3Final) (- (caddr P2) (* (/ DifferenceAltitudeP2_P1 DistanceP2_P1) DistanceP2_P3Final)))
)
(prompt (strcat
"\nAltitude du point intermédiaire : "
(rtos (caddr P3Final) 2 3)
))
)
)
)
)
(if (= int 4)
(while
(and
(not (= P3Temp "annUler"))
(< int 5)
)
(setq TexteP3 "\nChoisissez un autre point intermédiaire ou [annUler] (retour au deuxième point) ")
(initget "annUler")
(setq P3Temp (getpoint TexteP3))
(if (= P3Temp "annUler")
(setq int (- int 2))
(if (= P3Temp nil)
(setq int (+ int 1))
(progn
(setq
DifferenceAltitudeP2_P1 (- (caddr P2) (caddr P1))
DistanceP2_P1 (distance P2 P1)
DistanceP2_P3Temp (Distance P2 P3Temp)
AngleP2_P1 (Angle P2 P1)
AngleP2_P3Temp (Angle P2 P3Temp)
AngleSommetP2 (- AngleP2_P1 AngleP2_P3Temp)
DistanceP2_P3Final (* (cos AngleSommetP2) DistanceP2_P3Temp)
P3Final (polar P2 AngleP2_P1 DistanceP2_P3Final)
P3Final (list (car P3Final) (cadr P3Final) (- (caddr P2) (* (/ DifferenceAltitudeP2_P1 DistanceP2_P1) DistanceP2_P3Final)))
)
(prompt (strcat
"\nAltitude du point intermédiaire : "
(rtos (caddr P3Final) 2 3)
))
)
)
)
)
)
)
)