misc_openscad/Stomp Rockets/Saturn V v1.scad

68 lines
1.7 KiB
OpenSCAD

// A fixed fin stomp rocket version
// Units mm g s
use <Stomp Rocket Body v1.scad>
$fa = 1;
$fs = 0.5;
inner_radius = 17.5/2;
body_length = 150;
wall_thickness = 1.8;
outer_diameter = inner_radius + wall_thickness;
module inner_taper(taper_height=5) {
difference() {
cylinder(r=inner_radius, h=taper_height);
cylinder(r1=inner_radius, r2=1, h=taper_height-0.1);
}
}
module fairing(inner_radius=inner_radius, wall_thickness=wall_thickness) {
union() {
translate([0,0,50])
sphere(r=outer_diameter*1.5);
translate([0,0,10])
cylinder(r=outer_diameter*1.5,h=40);
cylinder(r2=outer_diameter*1.5,r1=outer_diameter,h=10);
}
}
module booster(width=20, height=75, thickness=3) {
union() {
translate([(width)/2+1,0,0])
cylinder(d=width, h=height);
translate([(width)/2+1,0,height])
cylinder(d1=width, d2=0, h=10);
translate([(width)/2+1,0,0])
cylinder(d1=width*1.15, d2=width, h=10);
for (i=[0.25*height, 0.75*height]) {
translate([(width)/2+1,0,i])
cylinder(d=1.15*width, h=5);
}
}
}
union() {
difference() {
union() {
translate([0,0,body_length])
rotate([0,180,0])
color("gray") rocket_body(inner_radius = inner_radius, wall_thickness=wall_thickness);
translate([0,0,body_length-20]) color("red") fairing();
}
translate([0,0,5])
cylinder(r=inner_radius+0.4, h=body_length-10);
}
translate([0,0,body_length-10]) color("blue") inner_taper(taper_height=5);
for (i=[0,90,180,270]) {
rotate(i)
translate([outer_diameter-0.1, 0, 0])
booster();
}
}