0031682: Visualization - Prs3d_ShadingAspect::SetTransparency() has no effect with...
[occt.git] / src / DrawResources / PROFIL.tcl
CommitLineData
973c2be1 1# Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 2#
973c2be1 3# This file is part of Open CASCADE Technology software library.
b311480e 4#
d5f74e42 5# This library is free software; you can redistribute it and/or modify it under
6# the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 7# by the Free Software Foundation, with special exception defined in the file
8# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9# distribution for complete text of the license and disclaimer of any warranty.
b311480e 10#
973c2be1 11# Alternatively, this file may be used under the terms of Open CASCADE
12# commercial license or contractual agreement.
b311480e 13
7fd59977 14# File: BRepOffset.cxx
15# Created: Wed Oct 25 10:39:23 1995
16# Author: Bruno DUMORTIER
17# <dub@fuegox>
18
19
20addmenu Sketch "Sketch" { vprofil2d }
21
22proc mkprofil2d {last} {
23 global [.top.p.eobj.name get]
24 global [.top.p.eobj.face get]
25 global DX
26 global DY
27 global DX0
28 global DY0
29
30 append cmd " F "
31 append cmd [dval DX] " " [dval DY]
32
33 for {set i 0} {$i < [.top.l.lb.cm size]} {incr i} {
34 append cmd " [.top.l.lb.cm get $i]"
35 }
36 if [info exist cmd] {
37 uplevel #0 eval 2dprofile [.top.p.eobj.name get] $cmd $last
38 }
39 .top.p.eobj.com delete 0 end
40 set DX0 [dval DX]
41 set DY0 [dval DY]
42 update
43 repaint
44}
45
46proc mkprofil3d {last} {
47 global [.top.p.eobj.name get]
48 global [.top.p.eobj.face get]
49 global DX
50 global DY
51
52 append cmd " F "
53 append cmd [dval DX] " " [dval DY]
54
55 if [info exist [.top.p.eobj.face get]] {
56 append cmd " S"
57 append cmd " [.top.p.eobj.face get]";
58 }
59 for {set i 0} {$i < [.top.l.lb.cm size]} {incr i} {
60 append cmd " [.top.l.lb.cm get $i]"
61 }
62 if [info exist cmd] {
63 puts $cmd
64 eval profile [.top.p.eobj.name get] $cmd $last
65 }
66 .top.p.eobj.com delete 0 end
67 repaint
68}
69
70proc bougex {} {
71 global DX
72 global DY
73
74 dset x0 DX
75 dset y0 DY
76
77 pick id x1 y1 z1 MOUSEbutton
78 dset MOUSEbutton 0
79 while {[dval MOUSEbutton] == 0} {
80 pick id x2 y2 z2 MOUSEbutton nowait
81 dset DX x0+x2-x1 DY y0
82 mkprofil2d WW
83 }
84 if {[dval MOUSEbutton] == 1} { mkprofil2d WW; return; }
85 dset DX x0 DY y0
86 mkprofil2d WW
87}
88
89proc bougey {} {
90 global DX
91 global DY
92
93 dset x0 DX
94 dset y0 DY
95
96 pick id x1 y1 z1 MOUSEbutton
97 dset MOUSEbutton 0
98 while {[dval MOUSEbutton] == 0} {
99 pick id x2 y2 z2 MOUSEbutton nowait
100 dset DX x0 DY y0+y2-y1
101 mkprofil2d WW
102 }
103 if {[dval MOUSEbutton] == 1} { mkprofil2d WW; return; }
104 dset DX x0 DY y0
105 mkprofil2d WW
106}
107
108proc bouge {} {
109 global DX
110 global DY
111
112 dset x0 DX
113 dset y0 DY
114
115 pick id x1 y1 z1 MOUSEbutton
116 dset MOUSEbutton 0
117 while {[dval MOUSEbutton] == 0} {
118 pick id x2 y2 z2 MOUSEbutton nowait
119 dset DX x0+x2-x1 DY y0+y2-y1
120 mkprofil2d WW
121 }
122 if {[dval MOUSEbutton] == 1} { mkprofil2d WW; return; }
123 dset DX x0 DY y0
124 mkprofil2d WW
125}
126
127proc bougefp {} {
128 global DX
129 global DY
130
131 dset x0 DX
132 dset y0 DY
133
134 dset MOUSEbutton 0
135 while {[dval MOUSEbutton] == 0} {
136 pick 29 x2 y2 z2 MOUSEbutton nowait
137 dset DX x2 DY y2
138 mkprofil2d WW
139 }
140 if {[dval MOUSEbutton] == 1} { mkprofil2d WW; return; }
141 dset DX x0 DY y0
142 mkprofil2d WW
143}
144
145proc movex {} {
146 pick id x1 y1 z1 MOUSEbutton
147 dset MOUSEbutton 0
148 while {[dval MOUSEbutton] == 0} {
149 set MO ""
150 pick id x2 y2 z2 MOUSEbutton nowait
151 dset dx x2-x1
152 if { [dval dx] != 0 } {
153 append MO "x "
154 append MO [dval dx]
155 }
156 append MO " WW"
157 mkprofil2d $MO
158 }
159 if {[dval MOUSEbutton] == 1} {
160 set MO ""
161 if { [dval dx] != 0 } {
162 append MO "x "
163 append MO [dval dx]
164 }
165 .top.l.lb.cm insert end $MO
166 mkprofil2d WW
167 return
168 }
169 2dclear
170 if [info exist [.top.p.eobj.face get]] {
171 eval pcurve [.top.p.eobj.face get];
172 }
173 mkprofil2d WW
174}
175
176proc movey {} {
177 pick id x1 y1 z1 MOUSEbutton
178 dset MOUSEbutton 0
179 while {[dval MOUSEbutton] == 0} {
180 set MO ""
181 pick id x2 y2 z2 MOUSEbutton nowait
182 dset dy y2-y1
183 if { [dval dy] != 0 } {
184 append MO "y "
185 append MO [dval dy]
186 }
187 append MO " WW"
188 mkprofil2d $MO
189 }
190 if {[dval MOUSEbutton] == 1} {
191 set MO ""
192 if { [dval dy] != 0 } {
193 append MO "y "
194 append MO [dval dy]
195 }
196 .top.l.lb.cm insert end $MO
197 mkprofil2d WW
198 return
199 }
200 2dclear
201 if [info exist [.top.p.eobj.face get]] {
202 eval pcurve [.top.p.eobj.face get];
203 }
204 mkprofil2d WW
205}
206
207proc movec {} {
208 autodisplay
209 upvar #0 pi PI
210 upvar #0 CurX CX
211 upvar #0 CurY CY
212 upvar #0 CurDX CDX
213 upvar #0 CurDY CDY
214
215 line dummyline CX CY CDX CDY
216
217 point p1 CX CY
218 repaint
219 pick id x1 y1 z1 MOUSEbutton
220 dset sign 1
221 if {[dval MOUSEbutton] == 2} { dset sign -1}
222 dset MOUSEbutton 0
223 autodisplay
224
225 while {[dval MOUSEbutton] == 0} {
226 pick id x2 y2 z2 MOUSEbutton nowait
227 autodisplay
228 point p2 x2 y2
229 cirtang dummy dummyline p1 p2
230 dset PS sign*(CDX*(y2-CY)-CDY*(x2-CX))
231 if { [dval PS] < 0 } { reverse dummy_1}
232 parameters dummy_1 CX CY U1
233 parameters dummy_1 x2 y2 U2
234 autodisplay
235 eval trim dummy_1 dummy_1 U1 U2
236 repaint
237 }
238
239 if {[dval MOUSEbutton] == 1} {
240 erase dummy_1
241 set MO ""
242 if { [dval U2] < [dval U1]} { dset U2 U2+2*PI}
243 dset da sign*180*(U2-U1)/PI
244 2dcvalue dummy_1 0 X Y DX DY
245 dset dr sqrt(DX*DX+DY*DY)
246 dset PS CDX*(y2-CY)-CDY*(x2-CX)
247 if { [dval PS] < 0 } {dset dr -dr}
248 if { [dval dr] != 0 } {
249 if { [dval da] != 0 } {
250 append MO "c "
251 append MO [format "%.3f" [dval dr]] " "
252 append MO [format "%.3f" [dval da]]
253 .top.l.lb.cm insert end $MO
254 }
255 }
256 mkprofil2d WW
257 return
258 }
259 2dclear
260 if [info exist [.top.p.eobj.face get]] {
261 eval pcurve [.top.p.eobj.face get];
262 }
263 mkprofil2d WW
264}
265
266proc movel {} {
267 pick id x1 y1 z1 MOUSEbutton
268 dset MOUSEbutton 0
269 while {[dval MOUSEbutton] == 0} {
270 set MO ""
271 pick id x2 y2 z2 MOUSEbutton nowait
272 dset dr sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
273 if { [dval dr] != 0 } {
274 append MO "l "
275 append MO [dval dr]
276 }
277 append MO " WW"
278 mkprofil2d $MO
279 }
280 if {[dval MOUSEbutton] == 1} {
281 set MO ""
282 if { [dval dr] != 0 } {
283 append MO "l "
284 append MO [dval dr]
285 }
286 .top.l.lb.cm insert end $MO
287 mkprofil2d WW
288 return
289 }
290 2dclear
291 if [info exist [.top.p.eobj.face get]] {
292 eval pcurve [.top.p.eobj.face get];
293 }
294 mkprofil2d WW
295}
296
297proc movet {} {
298 pick id x1 y1 z1 MOUSEbutton
299 dset MOUSEbutton 0
300 while {[dval MOUSEbutton] == 0} {
301 set MO ""
302 pick id x2 y2 z2 MOUSEbutton nowait
303 dset dx x2-x1 dy y2-y1
304 if { [dval dx] != 0 || [dval dy] != 0 } {
305 append MO "t "
306 append MO [dval dx] " " [dval dy]
307 }
308 append MO " WW"
309 mkprofil2d $MO
310 }
311 if {[dval MOUSEbutton] == 1} {
312 set MO ""
313 if { [dval dx] != 0 || [dval dy] != 0 } {
314 append MO "t "
315 append MO [dval dx] " " [dval dy]
316 }
317 .top.l.lb.cm insert end $MO
318 mkprofil2d WW
319 return
320 }
321 2dclear
322 if [info exist [.top.p.eobj.face get]] {
323 eval pcurve [.top.p.eobj.face get];
324 }
325 mkprofil2d WW
326}
327
328proc movexx {} {
329 pick id x1 y1 z1 MOUSEbutton
330 dset MOUSEbutton 0
331 while {[dval MOUSEbutton] == 0} {
332 set MO ""
333 pick id x2 y2 z2 MOUSEbutton nowait
334 append MO "xx "
335 append MO [dval x2]
336 append MO " WW"
337 mkprofil2d $MO
338 }
339 if {[dval MOUSEbutton] == 1} {
340 set MO ""
341 append MO "xx "
342 append MO [dval x2]
343 .top.l.lb.cm insert end $MO
344 mkprofil2d WW
345 return
346 }
347 2dclear
348 if [info exist [.top.p.eobj.face get]] {
349 eval pcurve [.top.p.eobj.face get];
350 }
351 mkprofil2d WW
352}
353
354proc moveyy {} {
355 pick id x1 y1 z1 MOUSEbutton
356 dset MOUSEbutton 0
357 while {[dval MOUSEbutton] == 0} {
358 set MO ""
359 pick id x2 y2 z2 MOUSEbutton nowait
360 append MO "yy "
361 append MO [dval y2]
362 append MO " WW"
363 mkprofil2d $MO
364 }
365 if {[dval MOUSEbutton] == 1} {
366 set MO ""
367 append MO "yy "
368 append MO [dval y2]
369 .top.l.lb.cm insert end $MO
370 mkprofil2d WW
371 return
372 }
373 2dclear
374 if [info exist [.top.p.eobj.face get]] {
375 eval pcurve [.top.p.eobj.face get];
376 }
377 mkprofil2d WW
378}
379
380proc moveix {} {
381 pick id x1 y1 z1 MOUSEbutton
382 dset MOUSEbutton 0
383 while {[dval MOUSEbutton] == 0} {
384 set MO ""
385 pick id x2 y2 z2 MOUSEbutton nowait
386 append MO "ix "
387 append MO [dval x2]
388 append MO " WW"
389 mkprofil2d $MO
390 }
391 if {[dval MOUSEbutton] == 1} {
392 set MO ""
393 append MO "ix "
394 append MO [dval x2]
395 .top.l.lb.cm insert end $MO
396 mkprofil2d WW
397 return
398 }
399 2dclear
400 if [info exist [.top.p.eobj.face get]] {
401 eval pcurve [.top.p.eobj.face get];
402 }
403 mkprofil2d WW
404}
405
406proc moveiy {} {
407 pick id x1 y1 z1 MOUSEbutton
408 dset MOUSEbutton 0
409 while {[dval MOUSEbutton] == 0} {
410 set MO ""
411 pick id x2 y2 z2 MOUSEbutton nowait
412 append MO "iy "
413 append MO [dval y2]
414 append MO " WW"
415 mkprofil2d $MO
416 }
417 if {[dval MOUSEbutton] == 1} {
418 set MO ""
419 append MO "iy "
420 append MO [dval y2]
421 .top.l.lb.cm insert end $MO
422 mkprofil2d WW
423 return
424 }
425 2dclear
426 if [info exist [.top.p.eobj.face get]] {
427 eval pcurve [.top.p.eobj.face get];
428 }
429 mkprofil2d WW
430}
431
432proc vprofil2d {} {
433
434 toplevel .top -bg cornsilk
435 wm geometry .top +10+10
436 wm title .top "SKETCHER"
437
438 frame .top.l -bg cornsilk
439
440 frame .top.l.lb -bg azure1 -relief ridge -bd 4
441 listbox .top.l.lb.cm -bg azure1 -yscrollcommand ".top.l.lb.sc set"
442# scrollbar .top.l.lb.sc -bg azure2 -fg grey80 -activeforeground grey90\
443# -relief sunken -command ".top.l.lb.cm yview"
444 scrollbar .top.l.lb.sc -bg azure2 \
445 -relief sunken -command ".top.l.lb.cm yview"
446 bind .top.l.lb.cm <Double-Button-1> {
447 .top.p.eobj.com delete 0 end
448 .top.p.eobj.com insert end\
449 [.top.l.lb.cm get [.top.l.lb.cm curselection]]
450 }
451 pack .top.l.lb.cm .top.l.lb.sc -side left -fill both -padx 2m
452
453 frame .top.l.t -bg azure2 -relief ridge -bd 4
454 radiobutton .top.l.t.a -bg azure3 -activebackground azure2\
455 -text "face" -variable proftype -value F
456 radiobutton .top.l.t.b -bg azure3 -activebackground azure2\
457 -text "closed" -variable proftype -value W
458 radiobutton .top.l.t.c -bg azure3 -activebackground azure2\
459 -text "wire" -variable proftype -value " "
460
461 frame .top.l.f -bg azure2 -relief ridge -bd 4
462 button .top.l.f.f -bg deepskyblue -activebackground lightskyblue1\
463 -text " FIT " -command {
464 if [info exist [.top.p.eobj.face get]] {
465 eval pcurve [.top.p.eobj.face get];
466 }
467 mkprofil2d WW
468 2dfit; repaint
469 }
470 button .top.l.f.u -bg deepskyblue -activebackground lightskyblue1\
471 -text " ZOOM + " -command {
472 2dmu; repaint
473 }
474 button .top.l.f.d -bg deepskyblue -activebackground lightskyblue1\
475 -text " ZOOM - " -command {2dmd; repaint}
476
477 pack .top.l.f.f .top.l.f.u .top.l.f.d -side right -padx 1m -pady 1m
478
479 frame .top.l.d -bg azure2 -relief ridge -bd 4
480 button .top.l.d.u -bg deepskyblue -activebackground lightskyblue1\
481 -text " UP" -command 2dpu
482 button .top.l.d.d -bg deepskyblue -activebackground lightskyblue1\
483 -text "DOWN" -command 2dpd
484 button .top.l.d.l -bg deepskyblue -activebackground lightskyblue1\
485 -text "LEFT" -command 2dpl
486 button .top.l.d.r -bg deepskyblue -activebackground lightskyblue1\
487 -text "RIGHT" -command 2dpr
488 pack .top.l.d.u .top.l.d.d .top.l.d.l .top.l.d.r -side left\
489 -padx 1m -pady 1m
490
491 frame .top.l.q -bg azure2 -relief ridge -bd 4
492 button .top.l.q.ok -bg deepskyblue -activebackground lightskyblue1\
493 -text " VALI " -command {
494 delete 29
495 if { $proftype == "F"} {
496 set proftype " "
497 } elseif { $proftype != "W" } {
498 set proftype "WW"
499 }
500 mkprofil3d $proftype
501 destroy .top
502 if [info exist PickedFace] { erase PickedFace}
503 repaint;
504 }
505 button .top.l.q.ko -bg deepskyblue -activebackground lightskyblue1\
506 -text " CANCEL " -command {
507 delete 29
508 if [info exist [.top.p.eobj.name get]] {
509 eval unset [.top.p.eobj.name get];
510 }
511 destroy .top
512 if [info exist PickedFace] { unset PickedFace}
513 repaint;
514 }
515 button .top.l.q.h -bg deepskyblue -activebackground lightskyblue1\
516 -text " HELP " -command helpme
517 pack .top.l.q.ok .top.l.q.ko .top.l.q.h -side left -fill both\
518 -padx 2m -pady 1m
519
520 pack .top.l.t.a .top.l.t.b .top.l.t.c -side left -padx 1m -pady 1m
521
522 pack .top.l.lb .top.l.t -side top -pady 1m -fill both
523 pack .top.l.f .top.l.d -side top -pady 1m -fill both
524 pack .top.l.q -side bottom -fill both -pady 1m
525
526 pack .top.l -side left -fill both -padx 1m
527
528 frame .top.p -bg azure2 -relief ridge -bd 4
529
530 frame .top.p.obj -bg azure2
531 frame .top.p.eobj -bg azure2
532 label .top.p.obj.name -bg azure2 -text "Name:"
533 entry .top.p.eobj.name -bg azure1 -relief sunken
534 .top.p.eobj.name insert end "prof"
535
536 label .top.p.obj.com -bg azure2 -text "Command:"
537 entry .top.p.eobj.com -bg azure1 -relief sunken
538 bind .top.p.eobj.com <Return> {
539 .top.l.lb.cm insert end [.top.p.eobj.com get]
540 mkprofil2d WW
541 }
542
543 label .top.p.obj.face -bg azure2 -text "Face:"
544 entry .top.p.eobj.face -bg azure1 -relief sunken -textvariable CURFACE
545 bind .top.p.eobj.face <Return> {
546 2dclear
547 if [info exist [.top.p.eobj.face get]] {
548 eval pcurve [.top.p.eobj.face get];
549 } elseif { [.top.p.eobj.face get] == "."} {
550 uplevel #0 pickface
551 set CURFACE PickedFace
552 uplevel #0 eval pcurve [.top.p.eobj.face get];
553 }
554 mkprofil2d WW
555 2dfit
556 repaint
557 }
558
559 label .top.p.obj.x0 -bg azure2 -text "X0:"
560 entry .top.p.eobj.x0 -bg azure1 -relief sunken -textvariable DX0
561 bind .top.p.eobj.x0 <Return> {
562 dset DX [expr $DX0]
563 mkprofil2d WW
564 }
565
566 label .top.p.obj.y0 -bg azure2 -text "Y0:"
567 entry .top.p.eobj.y0 -bg azure1 -relief sunken -textvariable DY0
568 bind .top.p.eobj.y0 <Return> {
569 dset DY [expr $DY0]
570 mkprofil2d WW
571 }
572
573 frame .top.c -bg azure2 -relief ridge -bd 4
574 button .top.c.add -bg deepskyblue -activebackground lightskyblue1\
575 -text " Add " -command {
576 .top.l.lb.cm insert end [.top.p.eobj.com get]
577 mkprofil2d WW
578 }
579 button .top.c.rem -bg deepskyblue -activebackground lightskyblue1\
580 -text "Remove" -command {
581 if {[.top.l.lb.cm curselection] != ""} {
582 .top.l.lb.cm delete [.top.l.lb.cm curselection]
583 } else {
584 .top.l.lb.cm delete end
585 }
586 2dclear
587 if [info exist [.top.p.eobj.face get]] {
588 eval pcurve [.top.p.eobj.face get];
589 }
590 mkprofil2d WW
591 }
592 button .top.c.set -bg deepskyblue -activebackground lightskyblue1\
593 -text " Set " -command {
594 if {[.top.l.lb.cm curselection] != ""} {
595 .top.l.lb.cm insert [.top.l.lb.cm curselection]\
596 [.top.p.eobj.com get]
597 .top.l.lb.cm delete [.top.l.lb.cm curselection]
598 } else {
599 .top.l.lb.cm insert end [.top.l.lb.cm get]
600 }
601 mkprofil2d WW
602 }
603 pack .top.c.add .top.c.rem .top.c.set -side left -fill both\
604 -padx 4m -pady 1m
605
606 frame .top.m -bg azure2 -relief ridge -bd 4
607
608 frame .top.m.m1 -bg azure2
609 button .top.m.m1.x -bg deepskyblue -activebackground lightskyblue1\
610 -text " X " -command movex
611 button .top.m.m1.xx -bg deepskyblue -activebackground lightskyblue1\
612 -text " XX " -command movexx
613
614 frame .top.m.m2 -bg azure2
615 button .top.m.m2.y -bg deepskyblue -activebackground lightskyblue1\
616 -text " Y " -command movey
617 button .top.m.m2.yy -bg deepskyblue -activebackground lightskyblue1\
618 -text " YY " -command moveyy
619
620 frame .top.m.m3 -bg azure2
621 button .top.m.m3.c -bg deepskyblue -activebackground lightskyblue1\
622 -text " C " -command movec
623 button .top.m.m3.ix -bg deepskyblue -activebackground lightskyblue1\
624 -text " IX " -command moveix
625
626 frame .top.m.m4 -bg azure2
627 button .top.m.m4.l -bg deepskyblue -activebackground lightskyblue1\
628 -text " L " -command movel
629 button .top.m.m4.iy -bg deepskyblue -activebackground lightskyblue1\
630 -text " IY " -command moveiy
631
632 frame .top.m.m5 -bg azure2
633 button .top.m.m5.t -bg deepskyblue -activebackground lightskyblue1\
634 -text " T " -command movet
635 button .top.m.m5.tt -bg deepskyblue -activebackground lightskyblue1\
636 -text " TT " -command movett
637
638 frame .top.sc -bg azure2 -relief ridge -bd 4
639 frame .top.sc.sc1 -bg azure2
640 button .top.sc.sc1.d -bg deepskyblue -activebackground lightskyblue1\
641 -text "SCAN" -command bouge
642 button .top.sc.sc1.f -bg deepskyblue -activebackground lightskyblue1\
643 -text " First Point " -command bougefp
644
645 frame .top.sc.sc2 -bg azure2
646 button .top.sc.sc2.x -bg deepskyblue -activebackground lightskyblue1\
647 -text " SCAN X " -command bougex
648 button .top.sc.sc2.y -bg deepskyblue -activebackground lightskyblue1\
649 -text " SCAN Y " -command bougey
650
651 pack .top.p.obj.name .top.p.obj.com .top.p.obj.face .top.p.obj.x0\
652 .top.p.obj.y0 -side top -fill x -pady 1m
653 pack .top.p.eobj.name .top.p.eobj.com .top.p.eobj.face .top.p.eobj.x0\
654 .top.p.eobj.y0 -side top -fill x -pady 1m
655 pack .top.p.obj .top.p.eobj -side left
656
657 pack .top.m.m1.x .top.m.m1.xx -side top -fill x -pady 1m
658 pack .top.m.m2.y .top.m.m2.yy -side top -fill x -pady 1m
659 pack .top.m.m3.c .top.m.m3.ix -side top -fill x -pady 1m
660 pack .top.m.m4.l .top.m.m4.iy -side top -fill x -pady 1m
661 pack .top.m.m5.t .top.m.m5.tt -side top -fill x -pady 1m
662 pack .top.m.m1 .top.m.m2 .top.m.m3 .top.m.m4 .top.m.m5 -side left -padx 2m
663
664 pack .top.sc.sc1.d .top.sc.sc1.f -side top -fill x -pady 1m
665 pack .top.sc.sc2.x .top.sc.sc2.y -side top -fill x -pady 1m
666 pack .top.sc.sc1 .top.sc.sc2 -side left -padx 6m
667
668 pack .top.p -side top -fill both -padx 1m -pady 1m
669 pack .top.c -side top -fill both -padx 1m -pady 1m
670 pack .top.m -side top -fill both -padx 1m -pady 1m
671 pack .top.sc -side top -fill both -padx 1m -pady 1m
672
673 #global variables and init them
674 global proftype
675 global CURFACE
676 global DX
677 global DY
678 global DX0
679 global DY0
680
681 set proftype " "
682 set CURFACE ""
683 set DX0 ""
684 set DY0 ""
685 dset DX 0
686 dset DY 0
687
688 view 29 -2D- 465 10 664 410
689 2dclear
690 # call 2dprofile to initialize CurX CurY CurDX CurDY
691 mkprofil2d WW
692}
693
694proc helpme {} {
695 toplevel .h -bg azure3
696 wm title .h "HELP"
697 wm geometry .h +40+90
698 message .h.m -justify left -bg azure2 -width 13c -relief ridge -bd 4 -text\
699 "Build a profile in the UV plane from a moving point and direction.\n \
700 The original point and direction are 0 0 and 1 0.\n \
701 Codes and values describe the point or direction change.\n \
702 When the point change the direction becomes the tangent.\n \
703 All angles are in degree (may be negative).\n \
704 By default the profile is closed.\n \
705 \n \
706 Instruction\tParameters\tAction\n \
707 F\t\tX Y\t\tSet the first point\n \
708 X\t\tDX\t\tTranslate point along X\n \
709 Y\t\tDY\t\tTranslate point along Y\n \
710 L\t\tDL\t\tTranslate point along direction\n \
711 XX\t\tX\t\tSet point X coordinate\n \
712 YY\t\tY\t\tSet point Y coordinate\n \
713 T\t\tDX DY\t\tTranslate point\n \
714 TT\t\tX Y\t\tSet point\n \
715 R\t\tAngle\t\tRotate direction\n \
716 RR\t\tAngle\t\tSet direction\n \
717 D\t\tDX DY\t\tSet direction\n \
718 IX\t\tX\t\tIntersect with vertical\n \
719 IY\t\tY\t\tIntersect with horizontal\n \
720 C\t\tRadius Angle\tArc of circle tangent to direction"
721
722 frame .h.q -relief ridge -bd 4 -bg azure3
723 button .h.q.q -bg deepskyblue -activebackground lightskyblue1 -text "QUIT" -command {destroy .h}
724 pack .h.q.q -padx 1m -pady 1m
725 pack .h.m .h.q -side top -pady 2m
726}