da5de6b393364c4b9eb52b334ab2fa0b5b1e6a4e
[occt.git] / samples / tcl / MBBGehauseRohteil.tcl
1 # The following example constructs (however, not trying to follow the drawings
2 # precisely) an airplane part called Gehause Rohteil from MBB Deutsche Aerospace.
3 # In this example the planar geometry is combined together with cylindrical parts.
4 # There are many ways to create a single mechanical workpiece like the following
5 # one. Here we choose Booleans as a main tool for material cutting. Fillets
6 # (presented in the original model) are not employed herein as we are focused
7 # on BOPs only. However, Gehause Rohteil is a good model to test blendings as well.
8 #
9 # This model was used as a test part for comparing modeling systems in 1979 and
10 # again in 1983. The tests were organized by Computer Aided Manufacturing
11 # International (CAM-I).
12 #
13 #Category: Modeling
14 #Title: MBB Gehause Rohteil (classic test for CAD modelling by CAM-I)
15
16 pload MODELING XSDRAW
17
18 # -----------------------------------------------------------------------------
19 # Prepare base contour
20 # -----------------------------------------------------------------------------
21
22 point p1  0  0
23 point p2  35 0
24 point p3  39 4
25 point p4  39 10
26 point p5  35 13
27 point p6  27 13
28 point p7  27 10
29 point p8  22 10
30 point p9  20 8
31 point p10 20 4
32 point p11 11 4
33 point p12 11 3
34 point p13 5  3
35 point p14 5  13
36 point p15 0  13
37 point p16 0  9
38 point p17 4  9
39 point p18 4  4
40 point p19 0  4
41
42 line l1 0 0 1 0; trim l1 l1 0 35
43 line l2 39 4 0 1; trim l2 l2 0 6
44 line l3 35 13 -1 0; trim l3 l3 0 8
45 line l4 27 13 0 -1; trim l4 l4 0 3
46 line l5 27 10 -1 0; trim l5 l5 0 5
47 line l6 20 8 0 -1; trim l6 l6 0 4
48 line l7 20 4 -1 0; trim l7 l7 0 9
49 line l8 11 4 0 -1; trim l8 l8 0 1
50 line l9 11 3 -1 0; trim l9 l9 0 6
51 line l10 5 3 0 1; trim l10 l10 0 10
52 line l11 5 13 -1 0; trim l11 l11 0 5
53 line l12 0 13 0 -1; trim l12 l12 0 4
54 line l13 0 9 1 0; trim l13 l13 0 4
55 line l14 4 9 0 -1; trim l14 l14 0 5
56 line l15 4 4 -1 0; trim l15 l15 0 4
57 line l16 0 4 0 -1; trim l16 l16 0 4
58
59 # We use Bezier curves here instead of circles. This does not make
60 # a great sense since we are focused on a principle rather than
61 # trying to follow the drawing precisely
62 2dbeziercurve c1 3 35 0 1 39 0 1 39 4 1
63 2dbeziercurve c2 3 39 10 1 39 13 1 35 13 1
64 2dbeziercurve c3 3 22 10 1 20 10 1 20 8 1
65
66 # Circle for a big hole
67 circle cbig 33 6.5 4.0
68
69 # Create topology
70 mkedge e1 l1
71 mkedge e2 c1
72 mkedge e3 l2
73 mkedge e4 c2
74 mkedge e5 l3
75 mkedge e6 l4
76 mkedge e7 l5
77 mkedge e8 c3
78 mkedge e9 l6
79 mkedge e10 l7
80 mkedge e11 l8
81 mkedge e12 l9
82 mkedge e13 l10
83 mkedge e14 l11
84 mkedge e15 l12
85 mkedge e16 l13
86 mkedge e17 l14
87 mkedge e18 l15
88 mkedge e19 l16
89 wire wout e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 e12 e13 e14 e15 e16 e17 e18 e19
90 mkedge ein1 cbig
91 wire win1 ein1
92 mkplane f wout
93 mkplane f1 win1
94 fixshape f f
95 fixshape f1 f1
96 bcut f f f1
97
98 # -----------------------------------------------------------------------------
99 # Make extrusion
100 # -----------------------------------------------------------------------------
101
102 prism p f 0 0 3
103
104 # -----------------------------------------------------------------------------
105 # Prepare a contour on top face
106 # -----------------------------------------------------------------------------
107
108 point p1  0  0
109 point p2  28 0
110 point p3  28 13
111 point p4  27 13
112 point p5  27 10
113 point p6  22 10
114 point p7  20 8
115 point p8  20 4
116 point p9  11 4
117 point p10 11 3
118 point p11 5  3
119 point p12 5  13
120 point p13 0  13
121 line l1 0 0 1 0; trim l1 l1 0 28
122 line l2 28 0 0 1; trim l2 l2 0 13
123 line l3 28 13 -1 0; trim l3 l3 0 1
124 line l4 27 13 0 -1; trim l4 l4 0 3
125 line l5 27 10 -1 0; trim l5 l5 0 5
126 line l6 20 8 0 -1; trim l6 l6 0 4
127 line l7 20 4 -1 0; trim l7 l7 0 9
128 line l8 11 4 0 -1; trim l8 l8 0 1
129 line l9 11 3 -1 0; trim l9 l9 0 6
130 line l10 5 3 0 1; trim l10 l10 0 10
131 line l11 5 13 -1 0; trim l11 l11 0 5
132 line l12 0 13 0 -1; trim l12 l12 0 13
133 2dbeziercurve c3 3 22 10 1 20 10 1 20 8 1
134
135 # Create topology on top face
136 plane top_pln 0 0 3
137 to3d l1 l1 top_pln
138 to3d l2 l2 top_pln
139 to3d l3 l3 top_pln
140 to3d l4 l4 top_pln
141 to3d l5 l5 top_pln
142 to3d c3 c3 top_pln
143 to3d l6 l6 top_pln
144 to3d l7 l7 top_pln
145 to3d l8 l8 top_pln
146 to3d l9 l9 top_pln
147 to3d l10 l10 top_pln
148 to3d l11 l11 top_pln
149 to3d l12 l12 top_pln
150 mkedge e1 l1
151 mkedge e2 l2
152 mkedge e3 l3
153 mkedge e4 l4
154 mkedge e5 l5
155 mkedge e6 c3
156 mkedge e7 l6
157 mkedge e8 l7
158 mkedge e9 l8
159 mkedge e10 l9
160 mkedge e11 l10
161 mkedge e12 l11
162 mkedge e13 l12
163 wire wout e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 e12 e13
164 mkface ftop top_pln wout
165 fixshape ftop ftop
166
167 # -----------------------------------------------------------------------------
168 # Make top extrusion
169 # -----------------------------------------------------------------------------
170
171 prism ptop ftop 0 0 1.5
172
173 # -----------------------------------------------------------------------------
174 # Fuse top and bottom parts and make features
175 # -----------------------------------------------------------------------------
176
177 # Fuse top and bottom
178 bfuse p p ptop
179
180 # Create a hole
181 plane top_pln 0 0 10
182 circle csmall 23 6.5 2.0
183 to3d hole_top csmall top_pln
184 plane bot_pln 0 0 -10
185 to3d hole_bot csmall bot_pln
186 mkedge ehole_top hole_top
187 mkedge ehole_bot hole_bot
188 wire whole_top ehole_top
189 wire whole_bot ehole_bot
190 thrusections tool 1 1 whole_top whole_bot
191 bcut p p tool
192
193 # Add extrusion around the hole
194 plane top_pln 0 0 4.5
195 circle csmall_outer 23 6.5 3.0
196 circle csmall_inner 23 6.5 2.0
197 to3d hole_top_outer csmall_outer top_pln
198 to3d hole_top_inner csmall_inner top_pln
199 mkedge e_hole_top_outer hole_top_outer
200 mkedge e_hole_top_inner hole_top_inner
201 wire w_hole_top_outer e_hole_top_outer
202 wire w_hole_top_inner e_hole_top_inner
203 mkface ftube_outer top_pln w_hole_top_outer
204 mkface ftube_inner top_pln w_hole_top_inner
205 fixshape ftube_outer ftube_outer
206 fixshape ftube_inner ftube_inner
207 prism ptube_outer ftube_outer 0 0 3
208 prism ptube_inner ftube_inner 0 0 3
209 bcut ptube ptube_outer ptube_inner
210 bfuse p p ptube
211
212 # Build elevation "teeths" near the big hole
213 box t1 26 0 0 3 2.5 7
214 box t2 26 13 0 3 -3 7
215 bfuse p p t1
216 bfuse p p t2
217
218 # Build elevation "teeths" near the tail
219 box t1 0 0 0 5 3 8
220 box t2 0 13 0 5 -3 8
221 bfuse p p t1
222 bfuse p p t2
223
224 # Remove some material from tail "teeths"
225 box blend_box 0 -5 0 5 25 5
226 trotate blend_box blend_box 0 0 0 0 1 0 -10
227 ttranslate blend_box blend_box 2.5 0 2.25
228 bcut p p blend_box
229
230 # Remove some material from "teeths" near big hole
231 box blend_box 0 -5 0 5 25 5
232 trotate blend_box blend_box 0 0 0 0 1 0 -9
233 ttranslate blend_box blend_box 14.5 0 1.5
234 bcut p p blend_box
235
236 # Hole at the tail
237 ellipse tail_hole1 0 0 0.75 0.5
238 plane base_pln 2 6.5 0
239 to3d tail_hole_3d1 tail_hole1 base_pln
240 mkedge e_tail_hole1 tail_hole_3d1
241 wire w_tail_hole1 e_tail_hole1
242 plane base_pln 2 6.5 20
243 to3d tail_hole_3d2 tail_hole1 base_pln
244 mkedge e_tail_hole2 tail_hole_3d2
245 wire w_tail_hole2 e_tail_hole2
246 thrusections tail_tube 1 1 w_tail_hole1 w_tail_hole2
247 bcut p p tail_tube
248
249 # Chamfer at tail
250 box blend_box 0 3 0 5 7 5
251 trotate blend_box blend_box 0 0 0 0 1 0 -5
252 ttranslate blend_box blend_box 2 0 1.5
253 bcut p p blend_box
254
255 # -----------------------------------------------------------------------------
256 # Extract final solid and simplify it
257 # -----------------------------------------------------------------------------
258
259 explode p So
260 unifysamedom result  p_1
261
262 # Show result
263 pload VISUALIZATION
264 vinit Driver1/Viewer1/View1
265 vsetcolorbg 200 200 255
266 vdisplay -dispMode 1 result
267 vfit
268 vaspects result -setFaceBoundaryDraw 1