From 7f007085c86f0960cb581a222517591ff76ca121 Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Fri, 2 May 2014 23:32:14 +0200 Subject: [PATCH] Prototype parts of a disposable model rocket. --- disposable-rocket-cone.scad | 64 +++++++++++++++++++++++++++++++++++++ disposable-rocket-fins.scad | 50 +++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 disposable-rocket-cone.scad create mode 100644 disposable-rocket-fins.scad diff --git a/disposable-rocket-cone.scad b/disposable-rocket-cone.scad new file mode 100644 index 0000000..6000ad0 --- /dev/null +++ b/disposable-rocket-cone.scad @@ -0,0 +1,64 @@ + +// motor prumer 17.7, delka 69.5 +// tycka prumer 3.4 mm + +eps = 0.01; + +r_vect = [ + 25, 25, 25, 24.95, 24.8, 24.7, + 24.55, 24.3, 24.0, 23.75, 23.4, 22.9, + 22.4, 21.8, 21.0, 20.3, 19.4, 18.3, + 17.0, 15.7, 14.1, 12.3, 10.2, 7.5, + 4.3, 0 ]; + +h_step = 5; + +$fn = 128; + +sc = 18.5/50; + +module cone() { + difference() { + for (x=[0 : len(r_vect)-2]) { + translate([0, 0, x*h_step*sc]) + cylinder(r1 = sc*r_vect[x]+1.5, r2 = sc*r_vect[x+1]+1.5, h = sc*h_step+eps); + }; + for (x=[0 : len(r_vect)-2]) { + translate([0, 0, (x-1)*h_step*sc]) + cylinder(r1 = sc*r_vect[x], r2 = sc*r_vect[x+1], h = sc*h_step+eps); + }; + }; +/* + translate([0, 0, -1.6]) + cylinder(r1 = r_vect[0] - 0.8, r2 = r_vect[0], h = 1.6+eps); + translate([0, 0, -20]) + cylinder(r = r_vect[0]-0.8, h = 20+eps); +*/ +}; + +cone(); +/* +render() difference() { + minkowski() { + render() cone(); + sphere(r = wall); + }; + cone(); +}; +*/ + + +motor_diam = 18.5; +wall = 1.5; +infty = 1000; + + translate([motor_diam/2 + wall + 3, 0, 0]) + difference() { + union() { + cylinder(r = 3 + wall, h = 5); + translate([-3 -wall, -3 -wall, 0]) + cube([3 + wall, 6 + 2*wall, 5]); + }; + translate([0, 0, -infty/2]) + cylinder(r = 3, h = infty); + }; diff --git a/disposable-rocket-fins.scad b/disposable-rocket-fins.scad new file mode 100644 index 0000000..758f719 --- /dev/null +++ b/disposable-rocket-fins.scad @@ -0,0 +1,50 @@ +eps = 0.01; +infty = 1000; + +motor_diam = 18; +wall = 1.5; + +cyl_h = 30; +clip_angle = 40; + +module fin() { + assign(h1 = cyl_h, h2 = 20, h_off = 50, w = 30, fin_w = 1.0) + translate([0, -fin_w/2, 0]) + hull() { + cube([eps, fin_w, h1]); + translate([w, 0, h_off]) + cube([eps, fin_w, h2]); + }; +}; + +module body() { + difference() { + cylinder(r = motor_diam/2 + wall, h = cyl_h); + translate([0, 0, -infty/2]) + cylinder(r = motor_diam/2, h = infty); + for (a = [-clip_angle/2, clip_angle/2]) + rotate([0, 0, a]) + translate([0, -wall/2, cyl_h/2]) + cube([infty, wall, infty]); + }; + + for (a = [60, 180, 300]) { + rotate([0, 0, a]) + translate([motor_diam/2 + wall/2, 0, 0]) + fin(); + }; + + translate([motor_diam/2 + wall + 3, 0, 0]) + difference() { + union() { + cylinder(r = 3 + wall, h = 5); + translate([-3 -wall, -3 -wall, 0]) + cube([3 + wall, 6 + 2*wall, 5]); + }; + translate([0, 0, -infty/2]) + cylinder(r = 3, h = infty); + }; +}; + +body(); + -- 2.43.0