0028599: Replacement of old Boolean operations with new ones in BRepProj_Projection...
[occt.git] / samples / tcl / cutter.tcl
CommitLineData
07b5cb8f 1# Sample: creation of milling cutter
ab91ab6f 2#Category: Modeling
3#Title: Milling cutter
07b5cb8f 4
5pload MODELING VISUALIZATION
6
7# parameters
8dset R 10. ;# outer radius
9dset H 20. ;# height of the spiral part
10dset a 0.5*pi ;# total angle of spiral rotation
11
12# make profile
13
14circle outer 0 0 0 0 0 1 R
15circle inner 0 0 0 0 0 1 R-2
16circle round 3 6 0 0 0 1 5
17polyline cut -2 0 0 -2 R+1 0 0.5 R+1 0 -1 0 0 -2 0 0
18
19proc _curvetoface {name} {
20 uplevel #0 mkedge $name $name
21 uplevel #0 wire $name $name
22 uplevel #0 mkface $name p0 $name
23}
24
25plane p0
26_curvetoface outer
27_curvetoface inner
28_curvetoface round
29mkface cut p0 cut
30
31bcommon teeth cut round
32bcommon teeth teeth outer
33
34tcopy inner profile
35set nbteeths 25
36for {set i 0} {$i < $nbteeths} {incr i} {
37 fuse profile profile teeth
38 trotate teeth 0 0 0 0 0 1 360./$nbteeths
39}
40
41# sweep profile along curved shape
42
43polyline sp 0 0 0 0 0 H
44cylinder ss 0 0 0 0 0 1 1 0 0 R
45vertex v1 R 0 0
46vertex v2 R 0 H
47line ll 0 0 a H
48trim ll ll 0 sqrt(a*a+H*H)
49
50trotate v2 0 0 0 0 0 1 180.*a/pi
51mkedge ee ll ss v1 v2
52wire gg ee
53
54donly profile sp gg
55explode profile w
56tcopy profile_1 profile_2
57tcopy profile_1 profile_3
58tscale profile_1 0 0 0 1./(R-2)
59ttranslate profile_2 0 0 H/2
60tscale profile_2 0 0 H/2 4./(R-2)
61ttranslate profile_3 0 0 H
62tscale profile_3 0 0 H 3./(R-2)
63
64mksweep sp
65setsweep -G gg 0 0
66addsweep profile_1
67addsweep profile_2
68addsweep profile_3
69vclear
70
71buildsweep base -S
72
73# make a shank
74plane p1 0 0 H 0 0 1
75pcylinder shank p1 1.4 H
76plane p2 0 0 H+1 0 0 1
77pcylinder sh2 p2 1.5 H-1
78bfuse shank shank sh2
79bfuse cutter base shank
80
81# check result
82checkshape cutter
83
84# show result
85incmesh cutter 0.01
86vdisplay cutter
87vsetdispmode cutter 1
63fad07e 88vrenderparams -msaa 8
07b5cb8f 89incmesh profile_1 0.01; vdisplay profile_1
90vfit