- 0.9 mm wall is too thin
- wider and thicker rubber band holders
- front cone rubber band holder moved down
- sharper front cone
- two motor clips instead of one, a bit thicker and lower positioned
- higher middle cylinder
// will fit tightly into the hole with inner diameter
// d1 + tight_fit_diam_diff
// will fit tightly into the hole with inner diameter
// d1 + tight_fit_diam_diff
-thin_wall = 0.9; // depends on the print width
+thin_wall = 1.0; // depends on the print width
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_height = 3.5;
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_height = 3.5;
-clip_clearance = segment_overlap/4;
+clip_width = 1.2;
+clip_clearance = 1.0;
clip_inner_space = motor_diam/2 - 1.5;
rod_diam = 3.4 + 1;
rubber_beam_height = 3;
clip_inner_space = motor_diam/2 - 1.5;
rod_diam = 3.4 + 1;
rubber_beam_height = 3;
+rubber_beam_width = 1.5;
fin_thickness = 1;
eps = 0.01;
fin_thickness = 1;
eps = 0.01;
//----------------- MOTOR MODULE -----------------------------
//----------------- MOTOR MODULE -----------------------------
- rotate([0, 0, 120]) intersection() {
+ for (angle = [120, -120]) rotate([0, 0, angle]) intersection() {
translate([clip_inner_space, -infty/2,
motor_len + motor_wall + clip_clearance])
translate([clip_inner_space, -infty/2,
motor_len + motor_wall + clip_clearance])
- cube([thin_wall, infty, clip_height]);
+ cube([clip_width, infty, clip_height]);
rotate([0, 0, -60])
translate([-infty/2, 0, 0]) cube(infty);
rotate([0, 0, -120])
rotate([0, 0, -60])
translate([-infty/2, 0, 0]) cube(infty);
rotate([0, 0, -120])
// -------------------- CENTRAL TUBE ---------------------
// -------------------- CENTRAL TUBE ---------------------
central_clip_r = 12;
central_clip_w = 4;
central_clip_r = 12;
central_clip_w = 4;
-central_clip_clearance = 1.5;
+central_clip_wall = 1.5;
+central_clip_clearance = 2.5;
module central_tube_solid() {
cylinder(r = motor_diam/2 + thick_wall, h = central_tube_h);
module central_tube_solid() {
cylinder(r = motor_diam/2 + thick_wall, h = central_tube_h);
central_tube_h/3]) rotate([0, 90, 0]) difference() {
cylinder(r = central_clip_r, h = central_clip_w);
translate([0, 0, -eps])
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);
+ cylinder(r = central_clip_r - central_clip_wall, h = central_clip_w + 2*eps);
translate([0, 0, segment_overlap])
bezier_cone([
[ 0, motor_diam/2 + thick_wall ], // start
translate([0, 0, segment_overlap])
bezier_cone([
[ 0, motor_diam/2 + thick_wall ], // start
- [ cone_h/2, motor_diam/2 + thick_wall ], // cp 1
+ [ cone_h/4, motor_diam/2 + thick_wall ], // cp 1
[ cone_h - motor_diam/2 - thick_wall, motor_diam/2 + thick_wall ], // cp 2
[ cone_h, 0 ],
], 40);
[ cone_h - motor_diam/2 - thick_wall, motor_diam/2 + thick_wall ], // cp 2
[ cone_h, 0 ],
], 40);
translate([0, 0, segment_overlap])
bezier_cone([
[ 0.7*thin_wall, motor_diam/2 + thick_wall - thin_wall ], // start
translate([0, 0, segment_overlap])
bezier_cone([
[ 0.7*thin_wall, motor_diam/2 + thick_wall - thin_wall ], // start
- [ cone_h/2-0.7*thin_wall, motor_diam/2 + thick_wall - thin_wall], // cp 1
+ [ cone_h/4-0.7*thin_wall, motor_diam/2 + thick_wall - thin_wall], // cp 1
[ cone_h - motor_diam/2 - thick_wall + thin_wall - 1.4*thin_wall, motor_diam/2 + thick_wall - thin_wall ], // cp 2
[ cone_h - 1.4*thin_wall, 0 ],
], 40);
[ cone_h - motor_diam/2 - thick_wall + thin_wall - 1.4*thin_wall, motor_diam/2 + thick_wall - thin_wall ], // cp 2
[ cone_h - 1.4*thin_wall, 0 ],
], 40);
intersection() {
cylinder(r = motor_diam/2 + thin_wall/2, h = segment_overlap);
translate([motor_diam/3-thin_wall/2, -infty/2,
intersection() {
cylinder(r = motor_diam/2 + thin_wall/2, h = segment_overlap);
translate([motor_diam/3-thin_wall/2, -infty/2,
- segment_overlap - rubber_beam_height/2 - eps])
- cube([thin_wall, infty, rubber_beam_height]);
+ segment_overlap - thick_wall - rubber_beam_height - eps])
+ cube([rubber_beam_width, infty, rubber_beam_height]);
-module thread_holder() {
- rotate([0, 90, 0]) {
- translate([0, 0, -1.5]) difference() {
- cylinder(r = 10, h = 3);
- translate([0, 0, -eps])
- cylinder(r = 8, h = 3 + 2*eps);
- };
- };
-}
-
-// thread_holder();
-difference() {
- // front_cone();
+difference($fn = 16) {
+ front_cone();
- translate([0, 0, -eps]) cube(infty);
+ translate([0, 0, -infty/2]) cube(infty);
translate([motor_diam + thick_wall, 0, 0])
motor_module();
translate([motor_diam + thick_wall, 0, 0])
motor_module();
rotate([0, 0, 240])
translate([motor_diam + thick_wall, 0, 0])
front_cone();
rotate([0, 0, 240])
translate([motor_diam + thick_wall, 0, 0])
front_cone();