966862dcc3dddccbefcfc3450d6bbc7b2fcae9b6
[occt.git] / tests / bugs / heal / bug26219_gehause_rohteil
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 # -----------------------------------------------------------------------------
14 # Prepare base contour
15 # -----------------------------------------------------------------------------
16
17 point p1  0  0
18 point p2  35 0
19 point p3  39 4
20 point p4  39 10
21 point p5  35 13
22 point p6  27 13
23 point p7  27 10
24 point p8  22 10
25 point p9  20 8
26 point p10 20 4
27 point p11 11 4
28 point p12 11 3
29 point p13 5  3
30 point p14 5  13
31 point p15 0  13
32 point p16 0  9
33 point p17 4  9
34 point p18 4  4
35 point p19 0  4
36
37 line l1 0 0 1 0; trim l1 l1 0 35
38 line l2 39 4 0 1; trim l2 l2 0 6
39 line l3 35 13 -1 0; trim l3 l3 0 8
40 line l4 27 13 0 -1; trim l4 l4 0 3
41 line l5 27 10 -1 0; trim l5 l5 0 5
42 line l6 20 8 0 -1; trim l6 l6 0 4
43 line l7 20 4 -1 0; trim l7 l7 0 9
44 line l8 11 4 0 -1; trim l8 l8 0 1
45 line l9 11 3 -1 0; trim l9 l9 0 6
46 line l10 5 3 0 1; trim l10 l10 0 10
47 line l11 5 13 -1 0; trim l11 l11 0 5
48 line l12 0 13 0 -1; trim l12 l12 0 4
49 line l13 0 9 1 0; trim l13 l13 0 4
50 line l14 4 9 0 -1; trim l14 l14 0 5
51 line l15 4 4 -1 0; trim l15 l15 0 4
52 line l16 0 4 0 -1; trim l16 l16 0 4
53
54 # We use Bezier curves here instead of circles. This does not make
55 # a great sense since we are focused on a principle rather than
56 # trying to follow the drawing precisely
57 2dbeziercurve c1 3 35 0 1 39 0 1 39 4 1
58 2dbeziercurve c2 3 39 10 1 39 13 1 35 13 1
59 2dbeziercurve c3 3 22 10 1 20 10 1 20 8 1
60
61 # Circle for a big hole
62 circle cbig 33 6.5 4.0
63
64 # Create topology
65 mkedge e1 l1
66 mkedge e2 c1
67 mkedge e3 l2
68 mkedge e4 c2
69 mkedge e5 l3
70 mkedge e6 l4
71 mkedge e7 l5
72 mkedge e8 c3
73 mkedge e9 l6
74 mkedge e10 l7
75 mkedge e11 l8
76 mkedge e12 l9
77 mkedge e13 l10
78 mkedge e14 l11
79 mkedge e15 l12
80 mkedge e16 l13
81 mkedge e17 l14
82 mkedge e18 l15
83 mkedge e19 l16
84 wire wout e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 e12 e13 e14 e15 e16 e17 e18 e19
85 mkedge ein1 cbig
86 wire win1 ein1
87 mkplane f wout
88 mkplane f1 win1
89 fixshape f f
90 fixshape f1 f1
91 bcut f f f1
92
93 # -----------------------------------------------------------------------------
94 # Make extrusion
95 # -----------------------------------------------------------------------------
96
97 prism p f 0 0 3
98
99 # -----------------------------------------------------------------------------
100 # Prepare a contour on top face
101 # -----------------------------------------------------------------------------
102
103 point p1  0  0
104 point p2  28 0
105 point p3  28 13
106 point p4  27 13
107 point p5  27 10
108 point p6  22 10
109 point p7  20 8
110 point p8  20 4
111 point p9  11 4
112 point p10 11 3
113 point p11 5  3
114 point p12 5  13
115 point p13 0  13
116 line l1 0 0 1 0; trim l1 l1 0 28
117 line l2 28 0 0 1; trim l2 l2 0 13
118 line l3 28 13 -1 0; trim l3 l3 0 1
119 line l4 27 13 0 -1; trim l4 l4 0 3
120 line l5 27 10 -1 0; trim l5 l5 0 5
121 line l6 20 8 0 -1; trim l6 l6 0 4
122 line l7 20 4 -1 0; trim l7 l7 0 9
123 line l8 11 4 0 -1; trim l8 l8 0 1
124 line l9 11 3 -1 0; trim l9 l9 0 6
125 line l10 5 3 0 1; trim l10 l10 0 10
126 line l11 5 13 -1 0; trim l11 l11 0 5
127 line l12 0 13 0 -1; trim l12 l12 0 13
128 2dbeziercurve c3 3 22 10 1 20 10 1 20 8 1
129
130 # Create topology on top face
131 plane top_pln 0 0 3
132 to3d l1 l1 top_pln
133 to3d l2 l2 top_pln
134 to3d l3 l3 top_pln
135 to3d l4 l4 top_pln
136 to3d l5 l5 top_pln
137 to3d c3 c3 top_pln
138 to3d l6 l6 top_pln
139 to3d l7 l7 top_pln
140 to3d l8 l8 top_pln
141 to3d l9 l9 top_pln
142 to3d l10 l10 top_pln
143 to3d l11 l11 top_pln
144 to3d l12 l12 top_pln
145 mkedge e1 l1
146 mkedge e2 l2
147 mkedge e3 l3
148 mkedge e4 l4
149 mkedge e5 l5
150 mkedge e6 c3
151 mkedge e7 l6
152 mkedge e8 l7
153 mkedge e9 l8
154 mkedge e10 l9
155 mkedge e11 l10
156 mkedge e12 l11
157 mkedge e13 l12
158 wire wout e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 e12 e13
159 mkface ftop top_pln wout
160 fixshape ftop ftop
161
162 # -----------------------------------------------------------------------------
163 # Make top extrusion
164 # -----------------------------------------------------------------------------
165
166 prism ptop ftop 0 0 1.5
167
168 # -----------------------------------------------------------------------------
169 # Fuse top and bottom parts and make features
170 # -----------------------------------------------------------------------------
171
172 # Fuse top and bottom
173 bfuse p p ptop
174
175 # Create a hole
176 plane top_pln 0 0 10
177 circle csmall 23 6.5 2.0
178 to3d hole_top csmall top_pln
179 plane bot_pln 0 0 -10
180 to3d hole_bot csmall bot_pln
181 mkedge ehole_top hole_top
182 mkedge ehole_bot hole_bot
183 wire whole_top ehole_top
184 wire whole_bot ehole_bot
185 thrusections tool 1 1 whole_top whole_bot
186 bcut p p tool
187
188 # Add extrusion around the hole
189 plane top_pln 0 0 4.5
190 circle csmall_outer 23 6.5 3.0
191 circle csmall_inner 23 6.5 2.0
192 to3d hole_top_outer csmall_outer top_pln
193 to3d hole_top_inner csmall_inner top_pln
194 mkedge e_hole_top_outer hole_top_outer
195 mkedge e_hole_top_inner hole_top_inner
196 wire w_hole_top_outer e_hole_top_outer
197 wire w_hole_top_inner e_hole_top_inner
198 mkface ftube_outer top_pln w_hole_top_outer
199 mkface ftube_inner top_pln w_hole_top_inner
200 fixshape ftube_outer ftube_outer
201 fixshape ftube_inner ftube_inner
202 prism ptube_outer ftube_outer 0 0 3
203 prism ptube_inner ftube_inner 0 0 3
204 bcut ptube ptube_outer ptube_inner
205 bfuse p p ptube
206
207 # Build elevation "teeths" near the big hole
208 box t1 26 0 0 3 2.5 7
209 box t2 26 13 0 3 -3 7
210 bfuse p p t1
211 bfuse p p t2
212
213 # Build elevation "teeths" near the tail
214 box t1 0 0 0 5 3 8
215 box t2 0 13 0 5 -3 8
216 bfuse p p t1
217 bfuse p p t2
218
219 # Remove some material from tail "teeths"
220 box blend_box 0 -5 0 5 25 5
221 trotate blend_box blend_box 0 0 0 0 1 0 -10
222 ttranslate blend_box blend_box 2.5 0 2.25
223 bcut p p blend_box
224
225 # Remove some material from "teeths" near big hole
226 box blend_box 0 -5 0 5 25 5
227 trotate blend_box blend_box 0 0 0 0 1 0 -9
228 ttranslate blend_box blend_box 14.5 0 1.5
229 bcut p p blend_box
230
231 # Hole at the tail
232 ellipse tail_hole1 0 0 0.75 0.5
233 plane base_pln 2 6.5 0
234 to3d tail_hole_3d1 tail_hole1 base_pln
235 mkedge e_tail_hole1 tail_hole_3d1
236 wire w_tail_hole1 e_tail_hole1
237 plane base_pln 2 6.5 20
238 to3d tail_hole_3d2 tail_hole1 base_pln
239 mkedge e_tail_hole2 tail_hole_3d2
240 wire w_tail_hole2 e_tail_hole2
241 thrusections tail_tube 1 1 w_tail_hole1 w_tail_hole2
242 bcut p p tail_tube
243
244 # Chamfer at tail
245 box blend_box 0 3 0 5 7 5
246 trotate blend_box blend_box 0 0 0 0 1 0 -5
247 ttranslate blend_box blend_box 2 0 1.5
248 bcut p p blend_box
249
250 # -----------------------------------------------------------------------------
251 # Extract final solid
252 # -----------------------------------------------------------------------------
253
254 explode p So
255 renamevar p_1 p
256
257 # -----------------------------------------------------------------------------
258 # Attempt to simplify the model
259 # -----------------------------------------------------------------------------
260
261 set nbshapes_before_simplify "
262 Number of shapes in shape
263  VERTEX    : 124
264  EDGE      : 211
265  WIRE      : 94
266  FACE      : 87
267  SHELL     : 1
268  SOLID     : 1
269  COMPSOLID : 0
270  COMPOUND  : 0
271  SHAPE     : 518
272 "
273 checknbshapes p -ref ${nbshapes_before_simplify} -t -m "result before attempt to simplify the model"
274
275 axo; donly p; fit
276 xwd ${imagedir}/${casename}_1.png
277
278 unifysamedom p p
279
280 set nbshapes_after_simplify "
281 Number of shapes in shape
282  VERTEX    : 84
283  EDGE      : 127
284  WIRE      : 51
285  FACE      : 44
286  SHELL     : 1
287  SOLID     : 1
288  COMPSOLID : 0
289  COMPOUND  : 0
290  SHAPE     : 308
291 "
292 checknbshapes p -ref ${nbshapes_after_simplify} -t -m "result after attempt to simplify the model"
293
294 xwd ${imagedir}/${casename}_2.png