340054e1 |
1 | puts "TODO OCC27316 Windows: OSD_Exception_ACCESS_VIOLATION" |
2 | puts "TODO OCC27316 Linux: segmentation violation" |
3 | puts "TODO OCC27316 ALL:TEST INCOMPLETE" |
4 | |
5 | puts "========" |
6 | puts "OCC27316" |
7 | puts "========" |
8 | puts "" |
9 | ########################## |
10 | # exception when XAddShape |
11 | ########################## |
12 | |
13 | # model of rib for Buran wing. Drawing taken from www.buran.ru |
14 | # Create parameters |
15 | set B1 140. ;# half chord 1 |
16 | set B2 60. ;# half chord 2 |
17 | set B3 50. ;# breadth of upper part |
18 | set L 1000.; # wing length |
19 | set L_edge [expr "sqrt($L*$L+($B1-$B2)*($B1-$B2))"] ;# wing edge length |
20 | set step 135. ;# stiffener step |
21 | set step1 95. ;# 1 stiffener step |
22 | set B_st 30. ;# stiffener flange breadth |
23 | set B_st1 50. ;# stiffener flange breadth with inclined part |
24 | set H_st 30. ;# stiffener flange height |
25 | set t_st 1.5 ;# stiffener flange web thickness |
26 | set offset_fl 10.0 ;# stiffener side flange 1 offset |
27 | set t_fl 2.0 ;# stiffener side flange 1 thickness |
28 | set B_fl1 20.0 ;# stiffener side flange 1 width |
29 | set B_fl2 16.0 ;# stiffener side flange 2 width |
30 | set angle_cos [expr "$L/$L_edge"] ;# cos of angle between axis x and wing edge |
31 | set angle_sin [expr "($B1-$B2)/$L_edge"] ;# sin of angle between axis x and wing edge |
32 | set rad_rivet 1.;# radius of rivet |
33 | set step_rivet 20.;# step between rivets |
34 | set offset_rivet 5.;# offset between rivets and stringer |
35 | set rad_cut 45. ; # radius of big cut in middle plate |
36 | set rad_cut1 35. ; # radius of middle cut in middle plate |
37 | set rad_cut2 25. ; # radius of small cut in middle plate |
38 | set t_ang 1.; # angle bracket thickness |
39 | set h_ang 18.; # angle bracket length |
40 | |
41 | |
42 | # Create edge of upper stiffener flange |
43 | vertex r_1 0. $B1 0.; |
44 | set i 1; |
45 | set NN 8 |
46 | while {$i < $NN} { |
47 | vertex r_[expr "($i-1)*4+2"] [expr "(($i-1)*$step+$step1-$B_st1/2)*$angle_cos"] [expr "$B1-(($i-1)*$step+$step1-$B_st1/2)*$angle_sin"] 0.; |
48 | vertex r_[expr "($i-1)*4+3"] [expr "(($i-1)*$step+$step1-$B_st/2)*$angle_cos+$H_st*$angle_sin"] [expr "$B1-(($i-1)*$step+$step1-$B_st/2)*$angle_sin-$H_st*$angle_cos"] 0.; |
49 | vertex r_[expr "($i-1)*4+4"] [expr "(($i-1)*$step+$step1+$B_st/2)*$angle_cos+$H_st*$angle_sin"] [expr "$B1-(($i-1)*$step+$step1+$B_st/2)*$angle_sin-$H_st*$angle_cos"] 0.; |
50 | vertex r_[expr "($i-1)*4+5"] [expr "(($i-1)*$step+$step1+$B_st1/2)*$angle_cos"] [expr "$B1-(($i-1)*$step+$step1+$B_st1/2)*$angle_sin"] 0.; |
51 | vertex r_[expr "($i-1)*4+6"] [expr "($i*$step+$step1+$B_st1/2)*$angle_cos"] [expr "$B1-($i*$step+$step1+$B_st1/2)*$angle_sin"] 0.; |
52 | edge e_[expr "($i-1)*4+1"] r_[expr "($i-1)*4+1"] r_[expr "($i-1)*4+2"]; |
53 | edge e_[expr "($i-1)*4+2"] r_[expr "($i-1)*4+2"] r_[expr "($i-1)*4+3"]; |
54 | edge e_[expr "($i-1)*4+3"] r_[expr "($i-1)*4+3"] r_[expr "($i-1)*4+4"]; |
55 | fillet2d fil1_$i e_[expr "($i-1)*4+2"] e_[expr "($i-1)*4+3"] 3. |
56 | edge e_[expr "($i-1)*4+4"] r_[expr "($i-1)*4+4"] r_[expr "($i-1)*4+5"]; |
57 | fillet2d fil2_$i e_[expr "($i-1)*4+3"] e_[expr "($i-1)*4+4"] 3. |
58 | wire w_$i e_[expr "($i-1)*4+1"] e_[expr "($i-1)*4+2"] fil1_$i e_[expr "($i-1)*4+3"] fil2_$i e_[expr "($i-1)*4+4"]; |
59 | incr i; |
60 | } |
61 | vertex r_last $L $B2 0.; |
62 | edge e_last r_[expr "($i-2)*4+5"] r_last; |
63 | vertex vu_1 0. [expr "$B1-$B3"] 0.; |
64 | vertex vu_2 $L [expr "$B2-$B3"] 0.; |
65 | edge e_v1 vu_1 r_1 ; |
66 | edge e_v2 r_last vu_2; |
67 | edge e_v3 vu_2 vu_1; |
68 | wire w_upper e_v1 w_1 w_2 w_3 w_4 w_5 w_6 w_7 e_last e_v2 e_v3; |
69 | |
70 | mkplane f_upper w_upper; |
71 | #Create holes for rivets |
72 | circle c1 $offset_rivet [expr "$B1-$B3+$offset_rivet"] 0. $rad_rivet; |
73 | mkedge e_hole1 c1; |
74 | wire w_hole1 e_hole1; |
75 | mkplane f_hole1 w_hole1; |
76 | compound f_hole1 holes_upper; |
77 | set i 1; |
78 | set NNN [expr "int($L_edge/$step_rivet)"] |
79 | while {$i < $NNN} { |
80 | copy f_hole1 f_hole_$i |
81 | ttranslate f_hole_$i [expr "$i*$step_rivet*$angle_cos"] [expr "-($i*$step_rivet*$angle_sin)"] 0. ; |
82 | add f_hole_$i holes_upper; |
83 | incr i; |
84 | } |
85 | bcut f_upper_holes_1 f_upper holes_upper; |
86 | prism fwall_upper f_upper_holes_1 0 0 $t_st; |
87 | |
88 | #Create low side flange 1 |
89 | #Create wire and face for side flange |
90 | vertex vf_1 0. [expr "$B1-$B3+$offset_fl"] 0.; |
91 | vertex vf_2 0. [expr "$B1-$B3+$offset_fl+$t_fl"] 0. ; |
92 | vertex vf_3 0. [expr "$B1-$B3+$offset_fl"] $t_st; |
93 | vertex vf_4 0. [expr "$B1-$B3+$offset_fl+$t_fl"] $t_st; |
94 | vertex vf_5 0. [expr "$B1-$B3+$offset_fl"] $B_fl1; |
95 | vertex vf_6 0. [expr "$B1-$B3+$offset_fl+$t_fl"] $B_fl1; |
96 | vertex vf_7 0. [expr "$B1-$B3+$offset_fl-$t_st"] $t_st; |
97 | vertex vf_8 0. [expr "$B1-$B3+$offset_fl+$t_fl+$t_st"] $t_st; |
98 | edge side_fl_1 vf_1 vf_2; |
99 | edge side_fl_2 vf_2 vf_8; |
100 | edge side_fl_3 vf_8 vf_4; |
101 | edge side_fl_4 vf_4 vf_6; |
102 | edge side_fl_5 vf_6 vf_5; |
103 | edge side_fl_6 vf_5 vf_3; |
104 | edge side_fl_7 vf_3 vf_7; |
105 | edge side_fl_8 vf_7 vf_1; |
106 | fillet2d side_f1 side_fl_3 side_fl_4 1.5; |
107 | fillet2d side_f2 side_fl_6 side_fl_7 1.5; |
108 | wire w_side_fl side_fl_1 side_fl_2 side_fl_3 side_f1 side_fl_4 side_fl_5 side_fl_6 side_f2 side_fl_7 side_fl_8; |
109 | mkplane f_side_fl w_side_fl; |
110 | prism v_side_fl f_side_fl [expr "$L_edge*$angle_cos"] [expr "-$L_edge*$angle_sin"] 0. ; |
111 | bfuse f_upper v_side_fl fwall_upper |
112 | |
113 | #Create upper side flange 2 |
114 | #Create wire and face for side flange 2 |
115 | vertex vfs_1 0. [expr "$B1+$t_st"] [expr "$B_fl2-$t_st/2."]; |
116 | vertex vfs_2 0. [expr "$B1+$t_st"] [expr "-$B_fl2+$t_st/2."]; |
117 | vertex vfs_3 0. $B1 [expr "$B_fl2-$t_st/2."]; |
118 | vertex vfs_4 0. $B1 [expr "-$B_fl2+$t_st/2."]; |
119 | vertex vfs_5 0. [expr "$B1-3.*$t_st"] 0.; |
120 | vertex vfs_6 0. [expr "$B1-3.*$t_st"] $t_st; |
121 | vertex vfs_7 0. $B1 $t_st; |
122 | edge side_fl2_1 vfs_1 vfs_2; |
123 | edge side_fl2_2 vfs_2 vfs_4; |
124 | edge side_fl2_3 vfs_4 r_1; |
125 | edge side_fl2_4 r_1 vfs_5 ; |
126 | #fillet2d side_f12_1 side_fl2_3 side_fl2_4 1.5; |
127 | edge side_fl2_5 vfs_5 vfs_6; |
128 | edge side_fl2_6 vfs_6 vfs_7; |
129 | edge side_fl2_7 vfs_7 vfs_3; |
130 | #fillet2d side_f12_2 side_fl2_6 side_fl2_7 1.5; |
131 | edge side_fl2_8 vfs_3 vfs_1; |
132 | #wire w_side_fl2 side_fl2_1 side_fl2_2 side_fl2_3 side_f12_1 side_fl2_4 side_fl2_5 side_fl2_6 side_f12_2 side_fl2_7 side_fl2_8; |
133 | wire w_side_fl2 side_fl2_1 side_fl2_2 side_fl2_3 side_fl2_4 side_fl2_5 side_fl2_6 side_fl2_7 side_fl2_8; |
134 | mkplane f_side_fl2 w_side_fl2; |
135 | |
136 | #Create first side flange 2 |
137 | prism v_side_fl2 f_side_fl2 [expr "($step1-$B_st1/2)*$angle_cos"] [expr "-($step1-$B_st1/2)*$angle_sin"] 0. ; |
138 | bfuse f_upper_1 v_side_fl2 f_upper; |
139 | |
140 | #Create next side flange 2 |
141 | prism v_side_fl3 f_side_fl2 [expr "($step-$B_st1)*$angle_cos"] [expr "-($step-$B_st1)*$angle_sin"] 0. ; |
142 | set i 1; |
143 | set NN 7 |
144 | while {$i < $NN} { |
145 | copy v_side_fl3 v_side_fl_$i |
146 | ttranslate v_side_fl_$i [expr "(($i-1)*$step+$step1+$B_st1/2)*$angle_cos"] [expr "-(($i-1)*$step+$step1+$B_st1/2)*$angle_sin"] 0. ; |
147 | bfuse f_upper_[expr "$i+1"] v_side_fl_$i f_upper_[expr "$i"] ; |
148 | incr i; |
149 | } |
150 | |
151 | #Create last side flange 2 |
152 | prism v_side_fl4 f_side_fl2 [expr "($L_edge-6*$step-$step1-$B_st1/2)*$angle_cos"] [expr "-($L_edge-6*$step-$step-$B_st1/2)*$angle_sin"] 0. ; |
153 | ttranslate v_side_fl4 [expr "(6*$step+$step1+$B_st1/2)*$angle_cos"] [expr "-(6*$step+$step1+$B_st1/2)*$angle_sin"] 0. ; |
154 | bfuse f_uppern f_upper_7 v_side_fl4 ; |
155 | unifysamedom f_upper1 f_uppern; |
156 | |
157 | restore [locate_data_file bug27316_edges_fillet.brep] edges_fillet |
158 | |
159 | bclearobjects; |
160 | bcleartools; |
161 | baddobjects f_upper1 edges_fillet; |
162 | bfillds; |
163 | bbuild rgf; |
164 | explode rgf so; |
165 | copy rgf_1 v_upper |
166 | |
167 | set edges [explode edges_fillet e]; |
168 | set nbe [llength $edges] |
169 | |
4f7d41ea |
170 | savehistory gf_hist |
340054e1 |
171 | for {set i 1} {$i <= $nbe} {incr i} { |
4f7d41ea |
172 | modified em gf_hist edges_fillet_$i; |
173 | blend v_upper v_upper 1.5 em; |
340054e1 |
174 | } |
175 | |
176 | #vdisplay v_upper; |
177 | #Create symmetrical part |
178 | copy v_upper v_lower; |
179 | tmirror v_lower 0. 0. 0. 0. 1. 0.; |
180 | |
181 | #Create middle plate |
182 | #Create wire and face for middle plate |
183 | vertex vfl_1 0. [expr "-($B1-$B3+$offset_fl)"] 0.; |
184 | vertex vfl_2 $L [expr "($B2-$B3+$offset_fl)"] 0.; |
185 | vertex vfl_3 $L [expr "-($B2-$B3+$offset_fl)"] 0.; |
186 | edge pl_1 vf_1 vfl_1; |
187 | edge pl_2 vfl_1 vfl_3; |
188 | edge pl_3 vfl_3 vfl_2; |
189 | edge pl_4 vfl_2 vf_1; |
190 | wire w_plate pl_1 pl_2 pl_3 pl_4; |
191 | mkplane f_plate w_plate; |
192 | |
193 | #Cut holes |
194 | #Create upper row of holes |
195 | bcut f_plate_holes f_plate holes_upper; |
196 | |
197 | #Create lower row of holes |
198 | copy holes_upper holes_lower; |
199 | tmirror holes_lower 0. 0. 0. 0. 1. 0. |
200 | bcut plate_holes_ul f_plate_holes holes_lower; |
201 | #Create 1 row of holes |
202 | compound holes_1; |
203 | set i 1; |
204 | set NN1 [expr "int(2*($B1-$B3+$offset_rivet)/$step_rivet)"] |
205 | while {$i < $NN1} { |
206 | copy f_hole1 f_hole1_$i |
207 | ttranslate f_hole1_$i 0. [expr "-($i*$step_rivet)"] 0. ; |
208 | add f_hole1_$i holes_1; |
209 | incr i; |
210 | } |
211 | bcut plate_holes_1 plate_holes_ul holes_1; |
212 | |
213 | #Create next rows of holes |
214 | set Nrow 6; #number of vertical rows |
215 | set j 1; |
216 | while {$j < $Nrow} { |
217 | copy f_hole1 f_hole_$j; |
218 | ttranslate f_hole_$j [expr "7*$step_rivet*$j*$angle_cos"] [expr "-(7*$step_rivet*$j)*$angle_sin-$step_rivet"] 0. ; |
219 | compound f_hole_$j holes_$j; |
220 | set i 1; |
221 | set NN2 [expr "$NN1-$j-1"]; |
222 | while {$i < $NN2} { |
223 | copy f_hole_$j f_holev_$i |
224 | ttranslate f_holev_$i 0. [expr "-($i*$step_rivet)"] 0. ; |
225 | add f_holev_$i holes_$j; |
226 | incr i; |
227 | } |
228 | bcut plate_holes_[expr "$j+1"] plate_holes_$j holes_$j; |
229 | incr j; |
230 | } |
231 | |
232 | #Create holes for cuts |
233 | #Create cut1 |
234 | circle c2 [expr "$offset_rivet+3.5*$step_rivet*$angle_cos"] 0. 0. $rad_cut; |
235 | mkedge e_hole2 c2; |
236 | wire w_hole2 e_hole2; |
237 | mkplane f_big_hole w_hole2; |
238 | bcut plate_holes_pl1 plate_holes_6 f_big_hole; |
239 | |
240 | #Create cut2 |
241 | copy f_big_hole f_big_hole1 |
242 | ttranslate f_big_hole1 [expr "7.*$step_rivet*$angle_cos"] 0. 0.; |
243 | bcut plate_holes_pl2 plate_holes_pl1 f_big_hole1; |
244 | |
245 | #Create cut3 |
246 | copy f_big_hole1 f_big_hole2 |
247 | ttranslate f_big_hole2 [expr "7.*$step_rivet*$angle_cos"] 0. 0.; |
248 | bcut plate_holes_pl3 plate_holes_pl2 f_big_hole2; |
249 | |
250 | #Create cut4 |
251 | circle c3 [expr "$offset_rivet+24.5*$step_rivet*$angle_cos"] 0. 0. $rad_cut1; |
252 | mkedge e_hole3 c3; |
253 | wire w_hole3 e_hole3; |
254 | mkplane f_big_hole3 w_hole3; |
255 | bcut plate_holes_pl4 plate_holes_pl3 f_big_hole3; |
256 | |
257 | #Create cut5 |
258 | circle c4 [expr "$offset_rivet+31.5*$step_rivet*$angle_cos"] 0. 0. $rad_cut2; |
259 | mkedge e_hole4 c4; |
260 | wire w_hole4 e_hole4; |
261 | mkplane f_big_hole4 w_hole4; |
262 | bcut plate_holes_pl5 plate_holes_pl4 f_big_hole4; |
263 | prism v_plate plate_holes_pl5 0. 0. [expr "-$t_st"]; |
264 | |
265 | #Create reinforcement of cut1 |
266 | circle c5 [expr "$offset_rivet+3.5*$step_rivet*$angle_cos+$rad_cut"] 0. [expr "3*$t_st"] 0. 1. 0. 3*$t_st; |
267 | mkedge en5 c5 [expr "3.141"] [expr "5*3.141/4"]; |
268 | circle c6 [expr "$offset_rivet+3.5*$step_rivet*$angle_cos+$rad_cut"] 0. [expr "3*$t_st"] 0. 1. 0. 4*$t_st; |
269 | mkedge en6 c6 [expr "3.141"] [expr "5*3.141/4"]; |
270 | explode en5 v; |
271 | explode en6 v; |
272 | vertex p1 [expr "$offset_rivet+3.5*$step_rivet*$angle_cos+$rad_cut+$t_st"] 0. 0. ; |
273 | vertex p2 [expr "$offset_rivet+3.5*$step_rivet*$angle_cos+$rad_cut+$t_st"] 0. [expr "-$t_st"] ; |
274 | edge en1 en6_2 en5_2; |
275 | edge en2 en5_1 p1; |
276 | edge en3 p1 p2; |
277 | edge en4 p2 en6_1; |
278 | wire w_en en1 en5 en2 en3 en4 en6; |
279 | mkplane f_en w_en; |
280 | revol rev_en1 f_en [expr "$offset_rivet+3.5*$step_rivet*$angle_cos"] 0. 0. 0. 0. 1. 360. |
281 | bfuse v_plate1 v_plate rev_en1; |
282 | |
283 | #Create reinforcement of cut2 |
284 | copy rev_en1 rev_en2; |
285 | ttranslate rev_en2 [expr "7.*$step_rivet*$angle_cos"] 0. 0.; |
286 | bfuse v_plate2 v_plate1 rev_en2; |
287 | |
288 | #Create reinforcement of cut3 |
289 | copy rev_en2 rev_en3; |
290 | ttranslate rev_en3 [expr "7.*$step_rivet*$angle_cos"] 0. 0.; |
291 | bfuse v_plate3 v_plate2 rev_en3; |
292 | |
293 | #Create reinforcement of cut4 |
294 | circle c7 [expr "$offset_rivet+24.5*$step_rivet*$angle_cos+$rad_cut1"] 0. [expr "3*$t_st"] 0. 1. 0. 3*$t_st; |
295 | mkedge en7 c7 [expr "3.141"] [expr "5*3.141/4"]; |
296 | circle c8 [expr "$offset_rivet+24.5*$step_rivet*$angle_cos+$rad_cut1"] 0. [expr "3*$t_st"] 0. 1. 0. 4*$t_st; |
297 | mkedge en8 c8 [expr "3.141"] [expr "5*3.141/4"]; |
298 | explode en7 v; |
299 | explode en8 v; |
300 | vertex p3 [expr "$offset_rivet+24.5*$step_rivet*$angle_cos+$rad_cut1+$t_st"] 0. 0. ; |
301 | vertex p4 [expr "$offset_rivet+24.5*$step_rivet*$angle_cos+$rad_cut1+$t_st"] 0. [expr "-$t_st"] ; |
302 | edge en9 en8_2 en7_2; |
303 | edge en10 en7_1 p3; |
304 | edge en11 p3 p4; |
305 | edge en12 p4 en8_1; |
306 | wire w_en1 en7 en10 en11 en12 en8 en9 ; |
307 | mkplane f_en1 w_en1; |
308 | revol rev_en4 f_en1 [expr "$offset_rivet+24.5*$step_rivet*$angle_cos"] 0. 0. 0. 0. 1. 360. |
309 | bfuse v_plate4 v_plate3 rev_en4; |
310 | |
311 | #Create reinforcement of cut5 |
312 | circle c9 [expr "$offset_rivet+31.5*$step_rivet*$angle_cos+$rad_cut2"] 0. [expr "3*$t_st"] 0. 1. 0. 3*$t_st; |
313 | mkedge en13 c9 [expr "3.141"] [expr "5*3.141/4"]; |
314 | circle c10 [expr "$offset_rivet+31.5*$step_rivet*$angle_cos+$rad_cut2"] 0. [expr "3*$t_st"] 0. 1. 0. 4*$t_st; |
315 | mkedge en14 c10 [expr "3.141"] [expr "5*3.141/4"]; |
316 | explode en13 v; |
317 | explode en14 v; |
318 | vertex p5 [expr "$offset_rivet+31.5*$step_rivet*$angle_cos+$rad_cut2+$t_st"] 0. 0. ; |
319 | vertex p6 [expr "$offset_rivet+31.5*$step_rivet*$angle_cos+$rad_cut2+$t_st"] 0. [expr "-$t_st"] ; |
320 | edge en15 en14_2 en13_2; |
321 | edge en16 en13_1 p5; |
322 | edge en17 p5 p6; |
323 | edge en18 p6 en14_1; |
324 | wire w_en2 en13 en16 en17 en18 en14 en15 ; |
325 | mkplane f_en2 w_en2; |
326 | revol rev_en5 f_en2 [expr "$offset_rivet+31.5*$step_rivet*$angle_cos"] 0. 0. 0. 0. 1. 360. |
327 | bfuse v_plate5 v_plate4 rev_en5; |
328 | |
329 | #Create pattern rivet 1 for 2 plates |
330 | circle c11 $offset_rivet [expr "$B1-$B3+$offset_rivet"] [expr " 0.3*$t_st"] 1. 0. 0. [expr "2.5* $rad_rivet"]; |
331 | mkedge e_riv c11 [expr "-acos(0.7*$t_st/2.5*$rad_rivet)"] 0; |
332 | explode e_riv v; |
333 | copy e_riv e_riv1; |
334 | tmirror e_riv1 0. 0. 0. 0. 0. 1.; |
335 | reverse e_riv1; |
336 | explode e_riv1 v; |
337 | vertex riv1 $offset_rivet [expr "$B1-$B3+$offset_rivet+$rad_rivet"] $t_st; |
338 | vertex riv2 $offset_rivet [expr "$B1-$B3+$offset_rivet+$rad_rivet"] [expr " -$t_st"]; |
339 | edge riv_e1 riv2 riv1; |
340 | edge riv_e2 e_riv_2 e_riv1_2; |
341 | edge riv_e3 e_riv1_1 riv2 ; |
342 | edge riv_e4 riv1 e_riv_1 ; |
343 | #fillet2d riv_fil1 riv_e1 riv_e3 0.25; |
344 | #fillet2d riv_fil2 riv_e2 riv_e1 0.25; |
345 | wire w_riv e_riv riv_e2 e_riv1 riv_e3 riv_e1 riv_e4; |
346 | mkplane f_riv w_riv; |
347 | revol rev_riv f_riv $offset_rivet [expr "$B1-$B3+$offset_rivet"] 0. 0. 0. 1. 360.; |
348 | |
349 | #Create pattern rivet 2 for 2 plates |
350 | copy e_riv e_riv3; |
351 | ttranslate e_riv3 0. 0. [expr " -$t_st"]; |
352 | explode e_riv3 v; |
353 | copy e_riv1 e_riv2; |
354 | ttranslate e_riv2 0. 0. [expr " -$t_ang"]; |
355 | explode e_riv2 v; |
356 | vertex riv3 $offset_rivet [expr "$B1-$B3+$offset_rivet+$rad_rivet"] 0; |
357 | vertex riv4 $offset_rivet [expr "$B1-$B3+$offset_rivet+$rad_rivet"] [expr " -$t_ang-$t_st"]; |
358 | |
359 | edge riv_e5 riv4 riv3; |
360 | edge riv_e6 riv3 e_riv3_1; |
361 | edge riv_e7 e_riv3_2 e_riv2_2; |
362 | edge riv_e8 e_riv2_1 riv4; |
363 | wire w_rivl e_riv3 riv_e7 e_riv2 riv_e8 riv_e5 riv_e6; |
364 | mkplane f_rivl w_rivl; |
365 | revol rev_rivl f_rivl $offset_rivet [expr "$B1-$B3+$offset_rivet"] 0. 0. 0. 1. 360.; |
366 | |
367 | #Create pattern rivet 3 for 3 plates |
368 | edge riv_e9 e_riv_2 e_riv2_2; |
369 | edge riv_e10 riv1 riv4; |
370 | wire w_riv3pl e_riv2 riv_e8 riv_e10 riv_e4 e_riv riv_e9 ; |
371 | mkplane f_riv3pl w_riv3pl; |
372 | revol rev_riv3pl f_riv3pl $offset_rivet [expr "$B1-$B3+$offset_rivet"] 0. 0. 0. 1. 360.; |
373 | |
374 | |
375 | #Create rivets upper row |
376 | compound rev_riv rivets_upper; |
377 | set i 1; |
378 | set NNN [expr "int($L_edge/$step_rivet)"] |
379 | while {$i < $NNN} { |
380 | if {fmod ($i,7) != 0 } { |
381 | copy rev_riv rev_riv_$i |
382 | ttranslate rev_riv_$i [expr "$i*$step_rivet*$angle_cos"] [expr "-($i*$step_rivet*$angle_sin)"] 0. ; |
383 | add rev_riv_$i rivets_upper; |
384 | } else { |
385 | copy rev_riv3pl rev_riv_$i |
386 | ttranslate rev_riv_$i [expr "$i*$step_rivet*$angle_cos"] [expr "-($i*$step_rivet*$angle_sin)"] 0. ; |
387 | add rev_riv_$i rivets_upper; |
388 | } |
389 | incr i; |
390 | } |
391 | |
392 | #Create rivets lower row |
393 | copy rivets_upper rivets_lower; |
394 | tmirror rivets_lower 0. 0. 0. 0. 1. 0.; |
395 | |
396 | #Create 1 row of rivets |
397 | |
398 | compound rivets_1; |
399 | set i 1; |
400 | set NN1 [expr "int(2*($B1-$B3+$offset_rivet)/$step_rivet)"] |
401 | while {$i < $NN1} { |
402 | copy rev_rivl rev_$i |
403 | ttranslate rev_$i 0. [expr "-($i*$step_rivet)"] 0. ; |
404 | add rev_$i rivets_1; |
405 | incr i; |
406 | } |
407 | |
408 | |
409 | #Create next rows of rivets |
410 | set Nrow 6; #number of vertical rows |
411 | set j 1; |
412 | while {$j < $Nrow} { |
413 | copy rev_rivl rev_riv1e_$j; |
414 | ttranslate rev_riv1e_$j [expr "7*$step_rivet*$j*$angle_cos"] [expr "-(7*$step_rivet*$j)*$angle_sin-$step_rivet"] 0. ; |
415 | compound rev_riv1e_$j rivets_$j; |
416 | set i 1; |
417 | set NN2 [expr "$NN1-$j-1"]; |
418 | while {$i < $NN2} { |
419 | copy rev_riv1e_$j rev_riv1v_$i |
420 | ttranslate rev_riv1v_$i 0. [expr "-($i*$step_rivet)"] 0. ; |
421 | add rev_riv1v_$i rivets_$j; |
422 | incr i; |
423 | } |
424 | incr j; |
425 | } |
426 | #Create profile for bracket |
427 | set ang_x1 [expr "($offset_rivet+7*$step_rivet-$h_ang/2)*$angle_cos"]; |
428 | set ang_y1 [expr "$B1-$B3+$offset_fl-($offset_rivet+7*$step_rivet-$h_ang/2)*$angle_sin"]; |
429 | vertex ang_1 $ang_x1 $ang_y1 [expr " -$t_st"]; |
430 | set ang_x2 [expr "($offset_rivet+7*$step_rivet+$h_ang/2)*$angle_cos"]; |
431 | set ang_y2 [expr "$B1-$B3+$offset_fl-($offset_rivet+7*$step_rivet+$h_ang/2)*$angle_sin"]; |
432 | vertex ang_2 $ang_x2 $ang_y2 [expr " -$t_st"]; |
433 | set ang_y3 [expr "$B1-$B3+$offset_fl-($offset_rivet+7*$step_rivet-$h_ang/2)*$angle_sin"]; |
434 | vertex ang_3 $ang_x1 $ang_y3 [expr " -$t_st-$t_ang"]; |
435 | set ang_y4 [expr "$B1-$B3+$offset_fl-($offset_rivet+7*$step_rivet+$h_ang/2)*$angle_sin"]; |
436 | vertex ang_4 $ang_x2 $ang_y4 [expr " -$t_st-$h_ang"]; |
437 | set ang_x5 [expr "($offset_rivet+7*$step_rivet+$h_ang/2-$t_ang)*$angle_cos"]; |
438 | set ang_y5 [expr "$B1-$B3+$offset_fl-($offset_rivet+7*$step_rivet+$h_ang/2-$t_ang)*$angle_sin"]; |
439 | vertex ang_5 $ang_x5 $ang_y5 [expr " -$t_st-$h_ang"]; |
440 | set ang_y6 [expr "$B1-$B3+$offset_fl-($offset_rivet+7*$step_rivet+$h_ang/2-$t_ang)*$angle_sin"]; |
441 | vertex ang_6 $ang_x5 $ang_y6 [expr " -$t_st-$t_ang"]; |
442 | edge ang_e1 ang_1 ang_2; |
443 | edge ang_e2 ang_2 ang_4; |
444 | edge ang_e3 ang_4 ang_5; |
445 | edge ang_e4 ang_5 ang_6; |
446 | edge ang_e5 ang_6 ang_3; |
447 | edge ang_e6 ang_3 ang_1; |
448 | fillet2d ang_f1 ang_e4 ang_e5 2.; |
449 | fillet2d ang_f2 ang_e5 ang_e6 0.4; |
450 | fillet2d ang_f3 ang_e3 ang_e4 0.4; |
451 | wire w_ang ang_e1 ang_e2 ang_e3 ang_f3 ang_e4 ang_f1 ang_e5 ang_f2 ang_e6; |
452 | mkplane f_ang w_ang; |
453 | prism v_ang f_ang 0. [expr "-2. *$B1"] 0.; |
454 | |
455 | |
456 | #Create prisms to cut profile |
457 | #prism v_pr1 |
458 | #vertex p1_1 0. [expr "-($B1-$B3+$offset_fl)-$B1"] 0.; |
459 | #vertex p1_2 $L [expr "-($B2-$B3+$offset_fl)-$B1"] 0.; |
460 | vertex p1_1 0. [expr "-($B1-$B3+$offset_fl)-3.*$B1"] 0.; |
461 | vertex p1_2 $L [expr "-($B2-$B3+$offset_fl)-3.*$B1"] 0.; |
462 | edge ep1_1 vfl_3 p1_2; |
463 | edge ep1_2 p1_2 p1_1; |
464 | edge ep1_3 p1_1 vfl_1; |
465 | wire w_pr1 ep1_1 pl_2 ep1_2 ep1_3; |
466 | mkplane f_pr1 w_pr1; |
467 | prism v_pr1 f_pr1 0. 0. [expr "-4.*$h_ang"]; |
468 | |
469 | #prism v_pr2 |
470 | vertex p2_1 $ang_x5 [expr "$ang_y5-10."] [expr " -$t_st-$h_ang"]; |
471 | vertex p2_2 $ang_x5 $ang_y5 [expr " -$t_st-$h_ang+10."]; |
472 | edge ep2_1 p2_1 p2_2; |
473 | edge ep2_2 p2_2 ang_5; |
474 | edge ep2_3 ang_5 p2_1; |
475 | wire w_pr2 ep2_1 ep2_2 ep2_3; |
476 | mkplane f_pr2 w_pr2; |
477 | prism v_pr2 f_pr2 [expr "$L*$angle_cos"] [expr "-$L*$angle_sin"] 0.; |
478 | |
479 | #prism v_pr3 |
480 | copy v_pr2 v_pr3; |
481 | tmirror v_pr3 0. 0. 0. 0. 1. 0.; |
482 | |
483 | #prism v_pr4 |
484 | set ang_xpr1 [expr "($offset_rivet+7*$step_rivet-$h_ang/2+5.)*$angle_cos"]; |
485 | set ang_ypr1 [expr "$B1-$B3+$offset_fl-($offset_rivet+7*$step_rivet-$h_ang/2+5.)*$angle_sin"]; |
486 | vertex p4_1 $ang_xpr1 $ang_ypr1 [expr " -$t_st"]; |
487 | vertex p4_2 $ang_x1 [expr "$ang_y1-5."] [expr " -$t_st"]; |
488 | edge ep4_1 p4_1 p4_2; |
489 | edge ep4_2 p4_2 ang_1; |
490 | edge ep4_3 ang_1 p4_1; |
491 | wire w_pr4 ep4_1 ep4_2 ep4_3; |
492 | mkplane f_pr4 w_pr4; |
493 | prism v_pr4 f_pr4 0. 0. [expr "-$L"]; |
494 | |
495 | #prism v_pr5 |
496 | copy v_pr4 v_pr5; |
497 | tmirror v_pr5 0. 0. 0. 0. 1. 0.; |
498 | |
499 | #Create bracket 1 |
500 | prism vholes_1 holes_1 0. 0. [expr "-4.*$h_ang"]; |
501 | bcut v_ang_1a v_ang v_pr1; |
502 | bcut v_ang_1b v_ang_1a v_pr2; |
503 | bcut v_ang_1c v_ang_1b v_pr3; |
504 | bcut v_ang_1d v_ang_1c v_pr4; |
505 | bcut v_ang_1e v_ang_1d v_pr5; |
506 | bcut v_ang_1f v_ang_1e vholes_1; |
507 | compound v_ang_1f brackets; |
508 | |
509 | set Nrow 6; #number of vertical rows |
510 | set j 2; |
511 | while {$j < $Nrow} { |
512 | copy v_ang_1e v_ang2; |
513 | ttranslate v_ang2 [expr "7*($j-1)*$step_rivet*$angle_cos"] [expr "-7*($j-1)*$step_rivet*$angle_sin"] 0.; |
514 | bcut v_ang3 v_ang2 v_pr1; |
515 | bcut v_ang4 v_ang3 v_pr3; |
516 | copy v_pr5 v_pr5_$j; |
517 | ttranslate v_pr5_$j [expr "7*($j-1)*$step_rivet*$angle_cos"] [expr "7*($j-1)*$step_rivet*$angle_sin"] 0.; |
518 | bcut v_ang5 v_ang4 v_pr5_$j; |
519 | prism vholes_$j holes_$j 0. 0. [expr "-4.*$h_ang"]; |
520 | bcut v_ang1_$j v_ang5 vholes_$j; |
521 | add v_ang1_$j brackets; |
522 | incr j; |
523 | } |
524 | |
525 | |
526 | #vdisplay v_plate5 v_upper v_lower rivets_1 rivets_2 rivets_3 rivets_4 rivets_5 rivets_upper rivets_lower brackets |
527 | |
528 | compound rivets_1 rivets_2 rivets_3 rivets_4 rivets_5 brackets brackets_with_rivets; |
529 | compound rivets_upper v_upper v_upper_rivets; |
530 | compound v_lower rivets_lower v_lower_rivets; |
531 | compound v_plate5 v_upper_rivets v_lower_rivets brackets_with_rivets wing_rib; |
532 | |
533 | |
534 | pload MODELING VISUALIZATION OCAF XDE; |
535 | NewDocument D;#creates new document with name D; |
536 | |
537 | #Assign names to shapes |
538 | XAddShape D wing_rib; |
539 | |
540 | SetName D 0:1:1:1 wing_rib; |
541 | SetName D 0:1:1:1:1 v_plate5; |
542 | SetName D 0:1:1:1:2 v_upper_rivets; |
543 | SetName D 0:1:1:1:3 v_lower_rivets; |
544 | SetName D 0:1:1:1:4 brackets_with_rivets; |
545 | SetName D 0:1:1:2 v_plate5; |
546 | SetName D 0:1:1:4 v_upper_rivets; |
547 | SetName D 0:1:1:4:1 rivets_upper; |
548 | SetName D 0:1:1:4:2 v_upper; |
549 | SetName D 0:1:1:5 rivets_upper; |
550 | SetName D 0:1:1:8 v_upper; |
551 | SetName D 0:1:1:8:1 v_upper; |
552 | SetName D 0:1:1:9 v_upper; |
553 | SetName D 0:1:1:10 v_lower_rivets; |
554 | SetName D 0:1:1:10:1 v_lower; |
555 | SetName D 0:1:1:10:2 rivets_lower; |
556 | SetName D 0:1:1:11 v_lower; |
557 | SetName D 0:1:1:13 rivets_lower; |
558 | |
559 | set i 1; |
560 | set NNN [expr "int($L_edge/$step_rivet)+1"] |
561 | while {$i < $NNN} { |
562 | SetName D 0:1:1:5:$i rev_riv_up_$i; |
563 | SetName D 0:1:1:13:$i rev_riv_low_$i; |
564 | set ind [expr "$i+13"] |
565 | XSetColor D 0:1:1:$ind 0.576 0.576 0.432; |
566 | incr i; |
567 | } |
568 | |
569 | XSetColor D 0:1:1:$ind 0.576 0.576 0.432; |
570 | puts $ind |
571 | SetName D 0:1:1:64 brackets_with_rivets; |
572 | SetName D 0:1:1:64:1 rivets_on_bracket_1; |
573 | SetName D 0:1:1:65 rivets_on_bracket_1; |
574 | SetName D 0:1:1:64:2 rivets_on_bracket_2; |
575 | SetName D 0:1:1:67 rivets_on_bracket_2; |
576 | SetName D 0:1:1:64:3 rivets_on_bracket_3; |
577 | SetName D 0:1:1:68 rivets_on_bracket_3; |
578 | SetName D 0:1:1:64:4 rivets_on_bracket_4; |
579 | SetName D 0:1:1:69 rivets_on_bracket_4; |
580 | SetName D 0:1:1:64:5 rivets_on_bracket_5; |
581 | SetName D 0:1:1:70 rivets_on_bracket_5; |
582 | SetName D 0:1:1:64:6 brackets; |
583 | SetName D 0:1:1:71 brackets; |
584 | SetName D 0:1:1:71:1 bracket_1; |
585 | SetName D 0:1:1:72 bracket_1; |
586 | SetName D 0:1:1:71:2 bracket_2; |
587 | SetName D 0:1:1:74 bracket_2; |
588 | SetName D 0:1:1:71:3 bracket_3; |
589 | SetName D 0:1:1:76 bracket_3; |
590 | SetName D 0:1:1:71:4 bracket_4; |
591 | SetName D 0:1:1:78 bracket_4; |
592 | SetName D 0:1:1:71:5 bracket_5; |
593 | SetName D 0:1:1:80 bracket_5; |
594 | |
595 | SetName D 0:1:1:3 plate5; |
596 | XSetColor D 0:1:1:3 0.58 0.57 0.57; |
597 | XSetColor D 0:1:1:6 0.576 0.576 0.432; |
598 | XSetColor D 0:1:1:7 0.576 0.576 0.432; |
599 | XSetColor D 0:1:1:66 0.576 0.576 0.432; |
600 | XSetColor D 0:1:1:75 0.58 0.57 0.57; |
601 | XSetColor D 0:1:1:77 0.58 0.57 0.57; |
602 | XSetColor D 0:1:1:79 0.58 0.57 0.57; |
603 | XSetColor D 0:1:1:81 0.58 0.57 0.57; |
604 | |
605 | |
606 | #All attributes (colors, dimensions can be exported only on basic solids without locations noty compounds |
607 | XGetShape v1 D 0:1:1:9; |
608 | explode v1 e; |
609 | #Set rivet diameter |
610 | XAddDimension D v1_388; #0:1:4:1 |
611 | XSetDimensionType D 0:1:4:1 15; |
612 | |
613 | XSetDimensionValue D 0:1:4:1 2.; |
614 | #Set length |
615 | XAddDimension D v1_296; #0:1:4:2 |
616 | XSetDimensionType D 0:1:4:2 2; |
617 | |
618 | XSetDimensionValue D 0:1:4:2 100.; |
619 | |
620 | XGetShape v2 D 0:1:1:3; |
621 | explode v2 f |
622 | |
623 | #Set cut diameter |
624 | XAddDimension D v2_24; #0:1:4:3 |
625 | XSetDimensionType D 0:1:4:3 15; |
626 | |
627 | XSetDimensionValue D 0:1:4:3 35.; |
628 | |
629 | #Set tolerance |
630 | XAddGeomTolerance D v2_2; #0:1:4: |
631 | XSetToleranceValue D 0:1:4:4 0.5 |
632 | |
633 | XSetTypeOfTolerance D 0:1:4:4 2 |
634 | |
635 | XSetTypeOfToleranceValue D 0:1:4:4 1 |
636 | |
637 | #======== |
638 | XAddShape D bracket_5 |