0 / 0 / 0
Регистрация: 01.10.2017
Сообщений: 1
|
|
1
|
Не могу доделать программу
01.10.2017, 21:27. Показов 1069. Ответов 1
Зависает при запуске программы в командной строке
Lisp | 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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
| (defun c:obob ()
(setq dcl_id (load_dialog "obob_zc"))
(if (not (new_dialog "obob_zc" dcl_id))
(exit)
)
(action_tile "accept" "(done_dialog 1)") ;Åñëè íàæàòà êíîïêà "àccept"
(action_tile "cancel" "(done_dialog 0)") ;Åñëè íàæàòà êíîïêà "cancel"
(new_dialog "obob_zc" dcl_id)
(setq Votn_x (atof (get_tile "Votn_x")))
(setq Votn_y (atof (get_tile "Votn_y")))
(setq Votn_z (atof (get_tile "Votn_z")))
(setq mtb (atof (get_tile "mtb")))
(setq pt_x (atof (get_tile "pt_x")))
(setq pt_y (atof (get_tile "pt_y")))
(setq pt_z (atof (get_tile "pt_z")))
(setq aw (atof (get_tile "aw")))
(setq s2 (atof (get_tile "s2")))
(setq gamma (atof (get_tile "gamma")))
(setq fi2 (atof (get_tile "fi2")))
(setq s1 (atof (get_tile "s1")))
(setq fi1 (atof (get_tile "fi1")))
(setq ax (atof (get_tile "ax")))
(setq ay (atof (get_tile "ay")))
(setq az (atof (get_tile "az")))
(setq gamma_y (atof (get_tile "gamma_y")))
(setq gamma_x (atof (get_tile "gamma_x")))
(setq a (atof (get_tile "a")))
(setq r (atof (get_tile "r")))
(setq beta (atof (get_tile "beta")))
(setq U_min (atof (get_tile "U_min")))
(setq U_max (atof (get_tile "U_max")))
(setq V_min (atof (get_tile "V_min")))
(setq V_max (atof (get_tile "V_max")))
(setq V_tek (atof (get_tile "V_tek")))
(setq U_tek (atof (get_tile "U_tek")))
(setq pt_x5 (atof (get_tile "pt_x5")))
(setq pt_y5 (atof (get_tile "pt_y5")))
(setq pt_z5 (atof (get_tile "pt_z5")))
(start_dialog)
)
;-----------------------------------------------------------------------
(defun zacep (Votn_x Votn_y Votn_z mtb pt_x pt_y pt_z aw
s2 gamma fi2 s1 fi1 ax ay az
gamma_y gamma_x a r beta U_min
U_max V_min V_max V_tek U_tek pt_x5 pt_y5 pt_z5
/ osm osm3 o x y z ox
oy oz pt_tek pt_Votn Votn o2 x2
y2 z2 o2x2 o2y2 o2z2 o1 x1 y1
z1 o1x1 o1y1 o1z1 o4 x4 y4 z4
o4x4 o4y4 o4z4 z4_ y4_ x5_ y5_ z_min
z_max r_min r_max pt0 pt1 pt2 pt3 pt4
pt5 pt_tekU U sphere pt_n n max_
min_ pt_tek5
)
(command "_UCS" "_W") ; þãî-çàïàäíàÿ èçîìåòðèÿ
(setq osm (getvar "osmode"))
(setq osm3 (getvar "3dosmode"))
(setvar "osmode" 0)
(setvar "3dosmode" 0)
(command "_layer" "_N" "xyz" "_C" "1" "xyz" "_S" "xyz" "")
; çàäàåì ñëîé
(setq o (getpoint "Óêàæèòå íà÷àëî êîîðäèíàò : "))
; òî÷êà íà÷àëà êîîðäèíàò XYZ
(setq x (mapcar '+ (list 0 0 90) o))
(setq y (mapcar '+ (list 90 0 0) o))
(setq z (mapcar '+ (list 0 90 0) o))
(command "_line" O x "")
(setq ox (entlast))
(command "_line" O y "")
(setq oy (entlast))
(command "_line" O z "")
(setq oz (entlast)) ;ñòðîèì îñè XYZ
(setq pt_tek (mapcar '+ (list pt_y pt_z pt_x) o))
(command "_line" O pt_tek "")
(setq pt_Votn
(mapcar '+
(list (* mtb Votn_y) (* mtb Votn_z) (* mtb Votn_x))
o
)
)
(command "_line" o pt_Votn "")
(setq Votn (entlast))
(command "_move" Votn "" o pt_tek)
;------------------------------------------------------------------
(command "_layer" "_N" "xyz2" "_C" "4" "xyz2" "_S" "xyz2" "")
; çàäàåì ñëîé
(setq o2 (mapcar '+
(list (* (sin gamma) s2) (* (cos gamma) s2) (- aw))
o
)
) ;òî÷êà íà÷àëà êîîðäèíàò X2Y2Z2
(setq x2 (mapcar '+ (list 0 0 45) o2))
(setq y2 (mapcar '+ (list 45 0 0) o2))
(setq z2 (mapcar '+ (list 0 45 0) o2))
(command "_line" O2 x2 "")
(setq o2x2 (entlast))
(command "_line" O2 y2 "")
(setq o2y2 (entlast))
(command "_line" O2 z2 "")
(setq o2z2 (entlast)) ;ñòðîèì îñè X2Y2Z2
(command "_rotate" o2z2 o2y2 "" o2 (- (* gamma (/ 180 pi))))
; ïîâîðîò íà îñåé íà óãîë ãàììà
;--------------------------------------------------------
(command "_layer" "_N" "xyz1" "_C" "3" "xyz1" "_S" "xyz1" "")
; çàäàåì ñëîé
(command "_UCS" "_3P" o x y) ; ïåðåâîä ÏÑÊ â XYZ
(setq o1 (list 0 0 s1)) ;òî÷êà íà÷àëà êîîðäèíàò X1Y1Z1
(setq x1 (mapcar '+ (list 45 0 0) o1))
(setq y1 (mapcar '+ (list 0 45 0) o1))
(setq z1 (mapcar '+ (list 0 0 45) o1))
(command "_line" O1 x1 "")
(setq o1x1 (entlast))
(command "_line" O1 y1 "")
(setq o1y1 (entlast))
(command "_line" O1 z1 "")
(setq o1z1 (entlast))
(command "_rotate" o1x1 o1y1 "" o1 (* fi1 (/ 180 pi)))
; ïîâîðîò îñåé íà óãîë fi1
(command "_UCS" "_z" (* fi1 (/ 180 pi))) ; ïåðåâîä ÏÑÊ â X1Y1Z1
;--------------------------------------------
(command "_layer" "_N" "xyz5" "_C" "2" "xyz5" "_S" "xyz5" "")
; çàäàåì ñëîé
(setq o4 (list ax ay az)) ;òî÷êà íà÷àëà êîîðäèíàò X4Y4Z4
(setq x4 (mapcar '+ (list 45 0 0) o4))
(setq y4 (mapcar '+ (list 0 45 0) o4))
(setq z4 (mapcar '+ (list 0 0 45) o4))
(command "_line" O4 x4 "")
(setq o4x4 (entlast))
(command "_line" O4 y4 "")
(setq o4y4 (entlast))
(command "_line" O4 z4 "")
(setq o4z4 (entlast))
(command "_UCS" "_3P" o4 z4 x4)
(setq o4_ (list 0 0 0))
(command "_rotate" o4z4 o4x4 "" o4_ (* gamma_y (/ 180 pi)))
; ïîâîðîò îñåé íà óãîë gamma_y
(setq z4_ (list 0 0 15))
(setq y4_ (list (* (cos gamma_y) 15) (* (sin gamma_y) 15) 0))
; âñïîìîãàòåëüíûå òî÷êè
(command "_UCS" "_3P" o4_ z4_ y4_)
(command "_rotate" o4z4 o4y4 "" o4_ (* gamma_x (/ 180 pi)))
; ïîâîðîò îñåé íà óãîë gamma_x
(setq x5_ (list (* (cos gamma_x) 15) (* (sin gamma_x) 15) 0))
; âñïîìîãàòåëüíûå òî÷êè
(setq y5_ (list (- (* (sin gamma_x) 15)) (* (cos gamma_x) 15) 0))
(command "_UCS" "_3P" o4_ z4_ x5_)
;--------------------------------------------------------------
(command "_layer" "_N" "êîíóñ" "_C" "5" "êîíóñ" "_S" "êîíóñ" "")
; çàäàåì ñëîé
(setq z_min (* U_min (cos beta)))
(setq z_max (* U_max (cos beta)))
(setq r_min (- r (* U_min (sin beta))))
(setq r_max (- r (* U_max (sin beta))))
(setq pt0 (list 0 0 a))
(setq pt1 (list 0 0 (+ a z_min)))
(setq pt2 (list r_min 0 (+ a z_min)))
(setq pt3 (list r 0 a))
(setq pt4 (list r_max 0 (+ a z_max)))
(setq pt5 (list 0 0 (+ a z_max)))
(setq pt_tekU (list (- r (* U_tek (sin beta)))
0
(+ a (* U_tek (cos beta)))
)
)
(command "_line" pt0 pt1 pt2 "")
(command "_line" pt2 pt4 "")
(setq U (entlast))
(command "_line" pt4 pt5 "")
(command "_line" pt5 pt0 "")
(command "_line" pt0 pt3 "") ; ñòðîèì ñå÷åíèå êîíóñà
(command "_layer" "_S" "xyz5" "")
(command "_sphere" pt_tekU 1)
(setq sphere (entlast))
(setq pt_n (mapcar '+
(list (* 5 (cos beta)) 0 (* 5 (sin beta)))
pt_tekU
)
)
(command "_line" pt_tekU pt_n "") ; íîðìàëü â òî÷êå êîíòàêòà
(setq n (entlast))
(command "_rotate" sphere n "" pt1 V_tek)
;----------------------------------------
(command "_layer" "_S" "êîíóñ" "")
(command "_REVOLVE" U "" pt5 pt1 (- V_max))
(setq max_ (entlast))
(command "_REVOLVE" U "" pt5 pt1 (- V_min))
(setq min_ (entlast))
(command "_subtract" max_ "" min_ "")
(command "_circle" pt0 (distance pt0 pt3))
(command "_rotate" U "" pt0 V_tek)
(command "_line" pt2 pt4 "")
;-------------------------------------------
(command "_layer" "_N" "ñêîðîñòü" "_C" "6" "ñêîðîñòü" "_S" "ñêîðîñòü"
"") ; çàäàåì ñëîé
(setq pt_tek5 (mapcar '+ (list pt_x5 pt_y5 pt_z5) o4_))
(command "_line" o4_ pt_tek5 "") ; ïîëîæåíèå òî÷êè êîíòàêòà
(setvar "osmode" osm)
(setvar "3dosmode" osm3)
)
(defun c:obob (/ dcl_id ddi)
(setq dcl_id (load_dialog "C:\Users\Sergey\Desktop\obob_zc.DCL"))
;çàãðóæàåì äèàëîãîâîå îêíî
(action_tile "accept" "(done_dialog 1)") ;Åñëè íàæàòà êíîïêà "àccept"
(action_tile "cancel" "(done_dialog 0)") ;Åñëè íàæàòà êíîïêà "cancel"
(setq ddi (start_dialog))
(unload_dialog num) ;âûãðóçèòü Äèàëîãîâîå îêíî
(progn (= ddi 1)
(zacep Votn_x Votn_y Votn_z mtb pt_x pt_y pt_z
aw s2 gamma fi2 s1 fi1 ax
ay az gamma_y gamma_x a r beta
U_min U_max V_min V_max V_tek U_tek pt_x5
pt_y5 pt_z5
)
)
) |
|
Вот диалоговое окно
Код
obob_zc: dialog {label = "Îáîáùåííîå çàöåïëåíèå";
: spacer{height=1;}
: text {label = "Çàäàéòå ïàðàìåòðû:"; key = "t1";}
: spacer{height=1;}
: text {label = "Êîîðäèíàòû òî÷êè XYZ:"; key = "t2";}
: row {
: edit_box {label = "x, ìì:"; key = "pt_x"; edit_width=10; value = "45.7";}
: edit_box {label = "y, ìì:"; key = "pt_y"; edit_width=10; value = "25.3";}
: edit_box {label = "z, ìì:"; key = "pt_z"; edit_width=10; value = "75.3";}
}
: spacer{height=1;}
: text {label = "Ïàðàìåòðû îñåé êîîðäèíàò:"; key = "t3";}
:row {
: column {
: edit_box {label = "a_w, ìì:"; key = "aw"; edit_width=10; value = "90";}
: edit_box {label = "s_2, ìì:"; key = "s2"; edit_width=10; value = "0";}
: edit_box {label = "s_1, ìì:"; key = "s1"; edit_width=10; value = "0";}
}
: column {
: edit_box {label = "óãîë ãàììà, ðàä:"; key = "gamma"; edit_width=10; value = "1.57";}
: edit_box {label = "fi_2, ðàä:"; key = "fi2"; edit_width=10; value = "0";}
: edit_box {label = "fi_1, ðàä:"; key = "fi1"; edit_width=10; value = "6.106";}
}
: column {
: edit_box {label = "a_x, ìì:"; key = "ax"; edit_width=10; value = "10";}
: edit_box {label = "a_y, ìì:"; key = "ay"; edit_width=10; value = "15";}
: edit_box {label = "a_z, ìì:"; key = "az"; edit_width=10; value = "20";}
}
}
: row {
: edit_box {label = "óãîë ïîâîðîòà ïî îñè y, ðàä:"; key = "gamma_y"; edit_width=10; value = "0.087";}
: edit_box {label = "óãîë ïîâîðîòà ïî îñè x, ðàä:"; key = "gamma_x"; edit_width=10; value = "0.175";}
}
: spacer{height=1;}
: text {label = "Ïàðàìåòðû ïîâåðõíîñòè:"; key = "t4";}
: row {
: column {
: edit_box {label = "a, ìì:"; key = "a"; edit_width=10; value = "20";}
: edit_box {label = "r, ìì:"; key = "r"; edit_width=10; value = "50";}
: edit_box {label = "óãîë áåòòà, ðàä:"; key = "beta"; edit_width=10; value = "0.349";}
}
: column {
: edit_box {label = "V_min, ãðàä:"; key = "V_min"; edit_width=10; value = "45";}
: edit_box {label = "V_max, ãðàä:"; key = "V_max"; edit_width=10; value = "135";}
: edit_box {label = "U_min, ìì:"; key = "U_min"; edit_width=10; value = "-10";}
}
: column {
: edit_box {label = "U_max, ìì:"; key = "U_max"; edit_width=10; value = "50";}
: edit_box {label = "V_tek, ãðàä:"; key = "V_tek"; edit_width=10; value = "47";}
: edit_box {label = "U_tek, ìì:"; key = "U_tek"; edit_width=10; value = "35.95";}
}
}
: spacer{height=1;}
: text {label = "Êîîðäèíàòû òî÷êè X5Y5Z5:"; key = "t6";}
: row {
: edit_box {label = "x5, ìì"; key = "pt_x5"; edit_width=10; value = "25.7";}
: edit_box {label = "y5, ìì"; key = "pt_y5"; edit_width=10; value = "27.6";}
: edit_box {label = "z5, ìì"; key = "pt_z5"; edit_width=10; value = "53.8";}
}
: spacer{height=1;}
: text {label = "Âåêòîð îòíîñèòåëüíîé ñêîðîñòè:"; key = "t7";}
: row {
: edit_box {label = "Votn_x"; key = "Votn_x"; edit_width=10; value = "-7.9";}
: edit_box {label = "Votn_y"; key = "Votn_y"; edit_width=10; value = "4.8";}
: edit_box {label = "Votn_z"; key = "Votn_z"; edit_width=10; value = "9.5";}
}
: edit_box {label = "Ìàñøòàá, (ì/ñ)/ìì"; key = "mtb"; edit_width=10; value = "5";}
ok_cancel;
}
0
|