X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=velux-window-grip.scad;h=d59a78fdced7e5e5f0b12e53f8dbe8d83e99bbc0;hp=672a42f144f7d8b4cdd02d00f594cd83ff12ef9f;hb=872cd48f11a61e4d11c38f0c29a457c95c8ff7dc;hpb=42b9172b21fa9c5b6e63dd9026aa54ae59257e88 diff --git a/velux-window-grip.scad b/velux-window-grip.scad index 672a42f..d59a78f 100644 --- a/velux-window-grip.scad +++ b/velux-window-grip.scad @@ -2,23 +2,52 @@ include -main_thick = 3.3; -main_in_dia = 28.9 + 0.5; +// MainLoop -horn_ext_dia = 20 - 0.5; //? +main_thick = 9.0; +main_in_dia = 28.9; -horn_c_x = -5; //? -horn_c_dy= -5; //? +horn_ext_dia = 20 - 0.5; + +horn_c_x = -4.6; +horn_c_dy= -4; blhook_start_ang = 45; +blhook_in_rad = 1.85; +blhook_str_len = 2.9; width = 20; +// Attach + +at_bolt_into = 13.0 + 0.5; +at_tube_dia = 16.7 + 0.5; +at_prong_minw = 4; +at_rear_thick = 4.5; +at_bolt_dia = 5 + 0.5; + +at_rear_width = at_tube_dia; +at_stem_len = main_in_dia/2 * 0.3; + +at_prong_depth = at_bolt_into * 2; +at_gap_width = at_tube_dia * 0.75; + +// computed + +blhook_mid_rad = blhook_in_rad + main_thick/2; mc_mid_rad = main_in_dia/2 + main_thick/2; mc_bl = circle_point([0,0], mc_mid_rad, 270-blhook_start_ang); -$fs=0.1; +at_block_x = at_tube_dia + at_prong_minw * 2; +at_block_y = at_prong_depth + at_rear_thick; +at_block_z = width; + +at_stem_yy = at_stem_len + mc_mid_rad; + +at_offset_y = at_block_y + at_stem_len + mc_mid_rad; + +$fs=0.05; horn_thick = main_thick; @@ -41,7 +70,13 @@ module MainLoop(){ intersection(){ difference(){ circle(horn_ext_dia/2); - circle(horn_ext_dia/2 - horn_thick); + intersection(){ + circle(horn_ext_dia/2 - horn_thick); + polygon([[-50,-50], + [-50,-horn_c_dy], + [50,-horn_c_dy], + [50,-50]]); + } } polygon([[0,0], [-50,0], @@ -49,6 +84,55 @@ module MainLoop(){ } translate([0,main_in_dia/2]) mirror([1,0]) square([-horn_c_x + horn_ext_dia/2 * 0.75, main_thick]); + translate(mc_bl){ + translate([-blhook_str_len/2, 0]) + square(center=true, [blhook_str_len, main_thick]); + translate([-blhook_str_len, blhook_mid_rad]){ + intersection(){ + difference(){ + circle(r=blhook_mid_rad + main_thick/2); + circle(r=blhook_mid_rad - main_thick/2); + } + mirror([1,1]) square(50); + } + } + } +} + +module MainLoopTest(){ + linear_extrude(height=1.6) + MainLoop(); +} + +module Attach(){ + difference(){ + translate([0, at_block_y/2, 0]) + cube(center=true, [at_block_x, at_block_y, at_block_z]); + translate([0, at_prong_depth/2-1, 0]) + cube(center=true, [at_gap_width, at_prong_depth+2, at_block_z+1]); + translate([0,-1,0]) + rotate([-90,0,0]) + cylinder(r= at_tube_dia/2, h= at_prong_depth+1); + translate([-50, at_prong_depth-at_bolt_into, 0]) + rotate([0,90,0]) + cylinder(r= at_bolt_dia/2, h= 100); + } + difference(){ + translate([0, at_block_y + at_stem_yy/2 - 0.1, 0]) + cube(center=true, [at_tube_dia, at_stem_yy + 0.2, at_block_z]); + translate([0, at_offset_y, -50]) + cylinder(r = mc_mid_rad, 100); + } +} + +module Combine(){ + rotate([0,0,45]) translate([0,-main_thick/2,0]){ + linear_extrude(height=width) + translate([0,at_offset_y,0]) + MainLoop(); + translate([0,0, width/2]) + Attach(); + } } -MainLoop(); +Combine();