From: Jan "Yenya" Kasprzak Date: Fri, 10 Nov 2017 14:20:54 +0000 (+0100) Subject: 808 camera lens holder for glasses X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=9fd237cd697454a2537a161ba246179648bd09a5;p=things.git 808 camera lens holder for glasses --- diff --git a/808-glasses-holder.scad b/808-glasses-holder.scad new file mode 100644 index 0000000..c675f04 --- /dev/null +++ b/808-glasses-holder.scad @@ -0,0 +1,51 @@ +infty = 100; +eps = 0.01; + +wall = 1.5; + +lens_size = 9.2; +lens_depth = 3; +lens_side = 0.9; +lens_angle = 0; + +cable_w = 7; + +stem_w = 2.75; +slot_l = 8; +slot_x_off = 6; +slot_angle = 15; +slot_y_angle = 10; + +// FIXME: Print rotated 180 degrees! +module body() { + hull() { + rotate([lens_angle, 0, 0]) + translate([-lens_size/2-wall, 0, 0]) + cube([lens_size+2*wall, 2*wall+lens_depth, wall+lens_size/2]); + rotate([0, 0, slot_angle]) + translate([-stem_w-wall-slot_x_off, -slot_l, 0]) + cube([stem_w + 2*wall, slot_l, wall + lens_size/2]); + } +} + +difference() { + body(); + // bottom + translate([-infty/2, -infty/2, -infty]) cube(infty); + // lens body + rotate([lens_angle, 0, 0]) + translate([-lens_size/2, wall, wall+(wall+lens_depth)*tan(-lens_angle)]) + cube([lens_size, lens_depth, lens_size + eps]); + // lens front + rotate([lens_angle, 0, 0]) + translate([-lens_size/2+lens_side, wall, wall+(wall+lens_depth)*tan(-lens_angle)]) + cube([lens_size-2*lens_side, lens_depth+wall+eps, lens_size + wall + 2*eps]); + // cable hole + rotate([lens_angle, 0, 0]) + translate([-cable_w/2, wall, -eps]) + cube([cable_w, lens_depth+wall+eps, lens_size+wall+2*eps]); + rotate([0, 0, slot_angle]) + rotate([0, slot_y_angle, 0]) + translate([-stem_w-slot_x_off, -infty/2, lens_size/2-1.5-infty]) + cube([stem_w, infty, infty]); +} diff --git a/firefly-q6-case.scad b/firefly-q6-case.scad index acc8ef6..47b9a43 100644 --- a/firefly-q6-case.scad +++ b/firefly-q6-case.scad @@ -11,8 +11,11 @@ corner_side_h = 5; hook_w = 3.5; hook_l = 6; -hook_hole_l = 2; -hook_hole_w = 1.5; +hook_hole_l = 3; +hook_hole_w = 2; + +ziptie_w = 4; +ziptie_h = 3; // base plate difference() { @@ -26,6 +29,19 @@ difference() { // cube([body_l-2*corner_r-2*hook_l, body_w - 2*corner_r, wall +2*eps]); translate([-body_l/2+corner_r, -body_w/2+corner_r, -eps]) cube([body_l-2*corner_r, body_w - 2*corner_r, wall +2*eps]); + + // ziptie angles + for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1]) + translate([body_l/2-corner_r-hook_l-ziptie_w, + body_w/2+wall/2-corner_r/2, wall]) + rotate([-40, 0, 0]) + translate([0, -ziptie_h/2, -infty/2]) + cube([ziptie_w, ziptie_h, infty]); + + // more space for lens + for (x = [-1, 1]) scale([x, 1, 1]) + translate([body_l/2, -body_w/2+corner_r, -eps]) + cube([wall+eps, body_w-2*corner_r, wall+2*eps]); } // raised corner bottom @@ -48,6 +64,8 @@ for (x = [-1, 1]) for (y = [-1, 1]) scale([x, y, 1]) translate([0, 0,-eps]) cylinder(r = corner_r, h = infty); translate([-infty, -infty/2, -infty/2]) cube(infty); + // front edges cut + rotate([-30, 0, 0]) translate([-infty/2, -infty, -infty/2]) cube(infty); } diff --git a/firefly-q6-hood.scad b/firefly-q6-hood.scad index a62c8a7..155e5d3 100644 --- a/firefly-q6-hood.scad +++ b/firefly-q6-hood.scad @@ -3,21 +3,67 @@ eps = 0.01; // Q6 lens dimensions yellow_ring_d = 19.5 + 0.5; yellow_ring_h = 3.5; +lens_d = 17; view_angle = 95; hood_h = 20; -hood_top_d = 30; +hood_top_d = 25; -lens_d = 15; +lens_d = 8; wall = 1.5; -rectangle_h = 80; +rectangle_h = 120; rectangle_w2h = 1.777; rect_d2 = rectangle_h * tan(view_angle/2); rect_x = 2*rect_d2/sqrt(1+rectangle_w2h*rectangle_w2h); rect_y = rectangle_w2h * rect_x; $fn = 128; + +module view_field() { + minkowski() { + hull() { + cube(eps); + translate([-rect_x/2, -rect_y/2, rectangle_h]) + cube([rect_x, rect_y, eps]); + } + cylinder(r=lens_d/2, h = eps); + } +} + + +hood_r = 30; +hood_h = 60; + +hood_y = 80; +hood_x = 50; + +difference() { +/* + union() { + translate([hood_x/2-wall, -hood_y/2, 0]) + cube([wall, hood_y, hood_h]); + for (y = [-1,1]) scale([1, y, 1]) + translate([-hood_x/2, hood_y/2-wall, 0]) + cube([hood_x, wall, hood_h]); + } +*/ + scale([1, 1.5, 1]) + cylinder(r = hood_r, h = hood_h); + scale([1, 1.5, 1]) + translate([0, 0, -eps]) + cylinder(r = hood_r-wall, h = hood_h+2*eps); + + view_field(); +} + +difference() { + cylinder(r = yellow_ring_d/2+wall, h = yellow_ring_h); + translate([0, 0, -eps]) + cylinder(r = yellow_ring_d/2, h = yellow_ring_h+2*eps); +} + +/* difference() { // body hull() { @@ -44,5 +90,4 @@ difference() { } - - +*/ diff --git a/firefly-q6-lens-cap.scad b/firefly-q6-lens-cap.scad index 993d2ad..4962f6d 100644 --- a/firefly-q6-lens-cap.scad +++ b/firefly-q6-lens-cap.scad @@ -2,13 +2,16 @@ eps = 0.01; // Q6 lens dimensions black_ring_d = 18.5 + 0.5; -yellow_ring_d = 19.5 + 0.5; +yellow_ring_d = 19.5 + 1; yellow_ring_d2 = 20.5; black_ring_h = 3.5; yellow_ring_h = 3.5; lens_overhang = 2; -wall = 1.5; +clip_h = 0.5; +clip_w = 1; + +wall = 1; body_h = wall + lens_overhang + black_ring_h + yellow_ring_h; body_d = 2*wall + yellow_ring_d2; @@ -20,8 +23,13 @@ difference() { cylinder(r = black_ring_d/2-wall, h = lens_overhang+eps); translate([0, 0, wall + lens_overhang]) cylinder(r = black_ring_d/2, h = black_ring_h+eps); - translate([0, 0, wall + lens_overhang + black_ring_h]) + translate([0, 0, wall + lens_overhang + black_ring_h]) difference() { cylinder(r = yellow_ring_d/2, h = yellow_ring_h+eps); + for (angle = [0:90:360]) rotate ([0, 0, angle]) + translate([yellow_ring_d/2 - clip_w, -yellow_ring_d/2, + yellow_ring_h - clip_h]) + cube([clip_w + eps, yellow_ring_d, clip_h + 2*eps]); + } } diff --git a/mini-arrow-fuselage-front.scad b/mini-arrow-fuselage-front.scad index be337d5..dbb27c1 100644 --- a/mini-arrow-fuselage-front.scad +++ b/mini-arrow-fuselage-front.scad @@ -3,7 +3,7 @@ infty = 300; fuse_w = 60; fuse_h = 33-3; -fuse_l = 80; +fuse_l = 100; wall = 2; @@ -13,11 +13,19 @@ wing_hole_x = 25; wing_hole_l = 25; wing_hole_h = 8; +rear_edge_w = 4; +rear_edge_h = 19 -3 ; // see front_rod_h from mini-arrow-fuselage.scad +rear_edge_l = 132-121.5; // fuse_l - front_rod_x from mini-arrow-fuselage.scad + +include +spring_width = 23; +spring_beam_w = 3; + difference() { translate([0, -fuse_w/2, 0]) intersection() { - cube([fuse_l, fuse_w, fuse_h]); - translate([0, 0, front_h]) - scale([fuse_l/(fuse_h-front_h), 1, 1]) + cube([fuse_l - spring_width + spring_beam_w, fuse_w, fuse_h]); + translate([rear_edge_l, 0, front_h]) + scale([(fuse_l-rear_edge_l)/(fuse_h-front_h), 1, 1]) rotate([-90, 0, 0]) cylinder(r = fuse_h-front_h, h = fuse_w, $fn = 128); @@ -35,17 +43,30 @@ difference() { translate([0, fuse_w/2, -10*0.707]) rotate([45, 0, 0]) cube([fuse_l, 10, 10]); + // rear end + for (y = [-1, 1]) scale([1, y, 1]) + translate([0, fuse_w/2, 0]) + rotate([0, 0, 60]) + cylinder(r = rear_edge_w, h = rear_edge_h, $fn = 4); }; // wing hole translate([wing_hole_x, -fuse_w/2-eps, wall]) cube([wing_hole_l, fuse_w + 2*eps, wing_hole_h]); // center squares - for (x = [9:16:fuse_l - 15]) + for (x = [9:16:fuse_l - 30]) for (y = [0,16]) for (n = [0, 16/2]) for (s = [-1, 1]) scale([1, s, 1]) translate([x+n, y-n, -eps]) cylinder(r = 6, h = wall + 2*eps, $fn = 4); + // top underhang + translate([rear_edge_l-infty, -infty/2, rear_edge_h]) + cube(infty); } + +translate([fuse_l - spring_width/2, 0, 0]) +rotate([0, 0, 90]) + spring(); + diff --git a/mini-arrow-spring2.scad b/mini-arrow-spring2.scad index 4961be6..708d3e3 100644 --- a/mini-arrow-spring2.scad +++ b/mini-arrow-spring2.scad @@ -108,6 +108,7 @@ module poly_path4309(h) } } +module spring() { poly_path4339(5); poly_path4315(5); poly_path4321(5); @@ -119,3 +120,4 @@ poly_path4285(5); poly_path4327(5); poly_path4297(5); poly_path4309(5); +} diff --git a/rc-plane-wheel.scad b/rc-plane-wheel.scad index b5d70f6..cd843f9 100644 --- a/rc-plane-wheel.scad +++ b/rc-plane-wheel.scad @@ -15,7 +15,7 @@ spoke_w = 3.5; spoke_h = 1.5; center_d = 5; -center_hole = 1; +center_hole = 1 + 0.5; center_h = 8; module body() { diff --git a/rocket.scad b/rocket.scad index a48be5e..c23fd52 100644 --- a/rocket.scad +++ b/rocket.scad @@ -7,10 +7,10 @@ motor_len = 69.5 + 0.5; segment_overlap = 15; -loose_fit_diam_diff = 0.5; // cylinder with outer diameter d1 +loose_fit_diam_diff = 1.0; // cylinder with outer diameter d1 // will fit loosely into the hole with inner diameter // d1 + loose_fit_diam_diff -tight_fit_diam_diff = 0.25; // cylinder with outer diameter d1 +tight_fit_diam_diff = 0.5; // cylinder with outer diameter d1 // will fit tightly into the hole with inner diameter // d1 + tight_fit_diam_diff diff --git a/skysurfer-motor-cover.scad b/skysurfer-motor-cover.scad index e865156..418f48c 100644 --- a/skysurfer-motor-cover.scad +++ b/skysurfer-motor-cover.scad @@ -9,19 +9,33 @@ // keep the resulting .stl file manifold. fudge = 0.1; -module poly_path4306(h) +module poly_outline() { - // linear_extrude(height=5) - rotate_extrude(angle = 210) rotate([0, 0, 90]) - translate([35,-13, 0]){ - polygon([[-35.333988,-11.375980],[-35.388672,-10.879880],[-19.400388,-8.881840],[-7.386879,-6.756644],[4.589842,-4.381840],[11.716397,-2.942169],[19.560552,-0.889650],[22.772022,0.412676],[26.967856,2.622476],[31.177810,5.551311],[32.984881,7.226479],[34.431642,9.010740],[34.818362,10.416990],[34.888672,11.375980],[35.388672,11.368160],[35.314452,10.356450],[34.845702,8.733400],[33.349661,6.878547],[31.503835,5.154443],[27.236641,2.175499],[22.991750,-0.049398],[19.716792,-1.366210],[11.819819,-3.433821],[4.687502,-4.874020],[-7.291714,-7.247646],[-19.322268,-9.374020],[-35.333988,-11.375980]]); - } +translate([35.01, -17.5, 0]) + polygon([[-34.993000,-7.750540],[-35.002600,-7.283950],[-30.390825,-6.787054],[-19.036880,-5.237750],[-5.577521,-2.848014],[4.953350,-0.739700],[12.407086,0.839569],[19.933820,2.756390],[29.405920,5.806369],[35.001720,7.750540],[35.002600,7.248370],[29.490142,5.319456],[20.070500,2.275930],[12.517434,0.353189],[5.050970,-1.227980],[-5.481264,-3.336864],[-18.958800,-5.729930],[-30.353692,-7.267481],[-34.993080,-7.750540]]); } infty = 200; + +module outline_border() { + rotate([0, -90, 0]) + linear_extrude(height=0.5) poly_outline(); +} + +module body() { + // main shape + rotate_extrude(angle = 210) + rotate([0, 0, 90]) + poly_outline(); + + // inner side supports + for (i = [-1,1]) scale([1, i, 1]) + for (y = [0:0.25:3.5]) + translate([0, y, 0]) + outline_border(); +} + difference() { - poly_path4306(); - translate([-infty/2, -infty/2, -infty]) cube(infty); - rotate([7, 0, 0]) - translate([-infty/2, 10, -infty/2]) cube(infty); + body(); + translate([5, -infty/2,-infty/2]) cube(infty); } diff --git a/skysurfer-motor-cover.svg b/skysurfer-motor-cover.svg index f2f7cab..9e055b7 100644 --- a/skysurfer-motor-cover.svg +++ b/skysurfer-motor-cover.svg @@ -25,9 +25,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="1.979899" - inkscape:cx="585.26214" - inkscape:cy="560" + inkscape:zoom="3.959798" + inkscape:cx="543.45808" + inkscape:cy="425.42546" inkscape:document-units="mm" inkscape:current-layer="layer1" inkscape:document-rotation="0" @@ -74,9 +74,10 @@ id="layer1"> + sodipodi:nodetypes="czzzc" + inkscape:label="#path4268" />