ba3d7cdf |
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 |
0493ffd0 |
266 | vdisplay -dispMode 1 result |
ba3d7cdf |
267 | vfit |
0493ffd0 |
268 | vaspects result -setFaceBoundaryDraw 1 |