]> www.fi.muni.cz Git - things.git/commitdiff
rocket.scad: new version
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sun, 29 Jun 2014 22:29:14 +0000 (00:29 +0200)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sun, 29 Jun 2014 22:29:14 +0000 (00:29 +0200)
- tight and loose connection between the parts
- new rubberband holder in the middle part
- new motor clip
- rubber band holder in the head cone moved higher

rocket.scad

index 3649fe197ee22a29efb64551cda57193d7c87a1a..da12f93a52be0445fe4c2bef31255acc49f794c2 100644 (file)
@@ -4,19 +4,30 @@
 
 motor_diam = 17.7 + 0.5; // add some tolerance
 motor_len  = 69.5 + 0.5;
-motor_wall = 2;
 
 segment_overlap = 15;
 
+loose_fit_diam_diff = 0.5; // 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
+       // will fit tightly into the hole with inner diameter
+       // d1 + tight_fit_diam_diff
+
 thin_wall = 0.9; // depends on the print width
-thick_wall = 2.2*thin_wall;
+thick_wall = 2*thin_wall + loose_fit_diam_diff/2;
+       // motor_diam + 2*thick_wall is the outer diameter of the rocket
+motor_wall = thick_wall; // above the motor
 
-clip_spring_angle = 45;
-clip_spring_depth = 20;
+clip_height = 3.5;
+clip_clearance = segment_overlap/4;
+clip_inner_space = motor_diam/2 - 1.5;
 
 rod_diam = 3.4 + 1;
 rubber_beam_height = 3;
 
+fin_thickness = 1;
+
 eps = 0.01;
 infty = 1000;
 
@@ -27,7 +38,7 @@ module fin() {
                h2 = 20,        // far end height
                h_off = motor_len, // height offset of the far height
                w = 30, // distance of the far height
-               fin_w = thin_wall)
+               fin_w = fin_thickness)
        translate([0, -fin_w/2, -h1])
        hull() { 
                cube([eps, fin_w, h1]); // near end
@@ -42,7 +53,7 @@ module fin2() {
                w2 = 23,        // bottom/far end width
                h_off = 60, // height offset of the far height
                w = 30, // distance of the far height
-               fin_w = thin_wall)
+               fin_w = fin_thickness)
        translate([0, -fin_w/2, -h1])
        hull() { 
                cube([eps, fin_w, h1]); // near end
@@ -51,49 +62,32 @@ module fin2() {
        };
 };
 
-rod_hole_height = 15;
+rod_hole_height = 20;
 rod_hole_side = 1.5*(rod_diam + thin_wall);
 
 module motor_module_solid()
 {
-       // the lowest part is for joining the segments
-       cylinder(r = motor_diam/2 + thin_wall, h = segment_overlap + eps);
+       // cone from loose_fit to tight fit, 1/3 of segment overlap
+       cylinder(r1 = motor_diam/2 + thin_wall,
+               r2 = motor_diam/2 + thick_wall - thin_wall - tight_fit_diam_diff/2,
+               h = segment_overlap/3 + eps);
+
+       // tight fit cylinder, 2/3 of segment overlap
+       translate([0, 0, segment_overlap/3])
+               cylinder(r = motor_diam/2 + thick_wall - thin_wall - tight_fit_diam_diff/2,
+               h = 2*segment_overlap/3 + eps);
 
        // conical joint between the two cylinders
        translate([0, 0, segment_overlap - thick_wall + thin_wall])
-               cylinder(r1 = motor_diam/2 + thin_wall,
+               cylinder(r1 = motor_diam/2 + thick_wall - thin_wall - tight_fit_diam_diff/2,
                        r2 = motor_diam/2 + thick_wall,
                        h = thick_wall - thin_wall + eps);
 
-       // protrusions to hold the main tube in place
-       for (a = [60, 180, 300]) {
-               rotate([0, 0, a]) {
-                       translate([motor_diam/2 + thick_wall - thin_wall/2 - thick_wall, 0, 0])
-                               cylinder(r1 = thick_wall-thin_wall/2, r2 = thick_wall, h = segment_overlap/3 + eps);
-                       translate([motor_diam/2 + thick_wall - thin_wall/2 - thick_wall, 0, segment_overlap/3])
-                               cylinder(r = thick_wall, h = 2*segment_overlap/3 + eps);
-               };
-       };
-
        // the thick cylinder above it
        translate([0, 0, segment_overlap])
                cylinder(r = motor_diam/2 + thick_wall,
                h = motor_len + motor_wall - segment_overlap);
 
-       // clip spring
-       translate([0, 0, motor_len + motor_wall])
-               intersection() {
-                       translate([motor_diam/2+6, infty/2, 4])
-                       rotate([90, 0, 0])
-                               cylinder(r = 8, h = infty);
-                       cylinder(r = motor_diam/2 + thick_wall, h = infty);
-                       rotate([0, 0, -clip_spring_angle/2+eps])
-                               cube(infty);
-                       rotate([0, 0, clip_spring_angle/2-eps])
-                               scale([1, -1, 1])
-                               cube([infty, infty, 8]);
-               };
-
        // fins
         for (a = [60, 180, 300]) {
                 rotate([0, 0, a])
@@ -108,7 +102,7 @@ module motor_module_solid()
                        0, segment_overlap])
                        scale([1, 1.4, 1])
                        cylinder(r = rod_diam/2 + thin_wall, h = eps);
-               translate([motor_diam/2 + thick_wall + rod_diam/2, 0, segment_overlap + rod_hole_side])
+               translate([motor_diam/2 + thick_wall + thin_wall + rod_diam/2, 0, segment_overlap + rod_hole_side])
                        scale([1, 1.1, 1])
                        cylinder(r = rod_diam/2 + thin_wall, h = rod_hole_height);
                translate([motor_diam/2 + thick_wall - rod_diam/2 - thin_wall,
@@ -117,6 +111,16 @@ module motor_module_solid()
                        cylinder(r = rod_diam/2 + thin_wall, h = eps);
        };
 
+       // motor clip
+       rotate([0, 0, 120]) intersection() {
+               translate([clip_inner_space, -infty/2,
+                       motor_len + motor_wall + clip_clearance])
+                       cube([thin_wall, infty, clip_height]);
+               rotate([0, 0, -60])
+                       translate([-infty/2, 0, 0]) cube(infty);
+               rotate([0, 0, -120])
+                       translate([-infty/2, 0, 0]) cube(infty);
+       };
 };
        
 module motor_module() {
@@ -145,26 +149,8 @@ module motor_module() {
                                        cylinder(r = 3, h = infty);
                };
 
-               // clip spring
-               for (r = [-clip_spring_angle/2, clip_spring_angle/2]) {
-                       rotate([0, 0, r])
-                       translate([-thin_wall/2, 0, motor_len + motor_wall - clip_spring_depth])
-                               cube([infty, thin_wall, infty]);
-               };
-               translate([0, 0, motor_len - eps])
-               intersection() {
-                       cylinder(r = motor_diam/2,
-                               h = thick_wall + 2*eps);
-                       rotate([0, 0, -clip_spring_angle/2+eps])
-                               cube(infty);
-                       rotate([0, 0, clip_spring_angle/2-eps])
-                               scale([1, -1, 1])
-                               cube([infty, infty, 8]);
-               };
-               
-
                // rod hole
-               translate([motor_diam/2 + thick_wall + eps + rod_diam/2, 0, 0])
+               translate([motor_diam/2 + thick_wall + thin_wall + eps + rod_diam/2, 0, 0])
                        cylinder(r = rod_diam/2, h = infty);
        };
 };
@@ -173,6 +159,10 @@ module motor_module() {
 
 central_tube_h = 85;
 
+central_clip_r = 12;
+central_clip_w = 4;
+central_clip_clearance = 1.5;
+
 module central_tube_solid() {
        cylinder(r = motor_diam/2 + thick_wall, h = central_tube_h);
 };
@@ -187,9 +177,18 @@ module central_tube() {
        // rubber band holder
        intersection() {
                cylinder(r = motor_diam/2 + thick_wall - eps, h = central_tube_h);
+/*
                translate([motor_diam/2 - thick_wall, -infty/2,
                        segment_overlap + thick_wall])
                        cube([thin_wall, infty, rubber_beam_height]);
+*/
+               translate([-central_clip_w/2,
+                       central_clip_r + motor_diam/2 + thick_wall - 2*thin_wall - central_clip_clearance,
+                       central_tube_h/3]) rotate([0, 90, 0]) difference() {
+                       cylinder(r = central_clip_r, h = central_clip_w);
+                       translate([0, 0, -eps])
+                               cylinder(r = central_clip_r - thin_wall, h = central_clip_w + 2*eps);
+               }
        };
 };
 
@@ -258,7 +257,7 @@ module front_cone() {
        intersection() {
                cylinder(r = motor_diam/2 + thin_wall/2, h = segment_overlap);
                translate([motor_diam/3-thin_wall/2, -infty/2,
-                       segment_overlap/2 - rubber_beam_height/2])
+                       segment_overlap - rubber_beam_height/2 - eps])
                        cube([thin_wall, infty, rubber_beam_height]);
        };
 };