diff options
author | Jan Huwald <jh@sotun.de> | 2018-07-23 10:42:19 (GMT) |
---|---|---|
committer | Jan Huwald <jh@sotun.de> | 2018-07-23 10:42:19 (GMT) |
commit | 17eade7b2b86ef56fca70ab8e4df5ad81730b202 (patch) | |
tree | fe26a1c621f3b2fd7fbe76d204f29feea73f587f |
Initial commit
-rw-r--r-- | board_bottom.scad | 3 | ||||
-rw-r--r-- | board_top.scad | 3 | ||||
-rw-r--r-- | stagedelta.scad | 92 |
3 files changed, 98 insertions, 0 deletions
diff --git a/board_bottom.scad b/board_bottom.scad new file mode 100644 index 0000000..c1fcbfa --- /dev/null +++ b/board_bottom.scad @@ -0,0 +1,3 @@ +use <stagedelta.scad>; + +board_bottom(); diff --git a/board_top.scad b/board_top.scad new file mode 100644 index 0000000..8cd9f12 --- /dev/null +++ b/board_top.scad @@ -0,0 +1,3 @@ +use <stagedelta.scad>; + +board_top(); diff --git a/stagedelta.scad b/stagedelta.scad new file mode 100644 index 0000000..f723a2c --- /dev/null +++ b/stagedelta.scad @@ -0,0 +1,92 @@ +beam_inter_distance=1500; +board_height=18; + +beam_intra_distance=200; +beam_height=2500; +beam_radius=47.5/2; +beam_top_r1=35/2; +beam_top_r2=29/2; beam_top_h2=15; // TODO: measure h2/h3, values are guessed +beam_top_r3=26/2; beam_top_h3=20; +beam_top_h4=5; + +module triangulate(d) { + children(); + + translate([d, 0, 0]) + rotate(120) + children(); + + rotate(60) + translate([d, 0, 0]) + rotate(180) + children(); +} + +module beam(include_struts=false) { + triangulate(beam_intra_distance) + union() { + cylinder(r=beam_radius, h=beam_height); + + translate([0, 0, beam_height]) { + cylinder(r1=beam_top_r1, r2=beam_top_r2, h=beam_top_h2); + + translate([0, 0, beam_top_h2]) + cylinder(r1=beam_top_r2, r2=beam_top_r2, h=beam_top_h3); + + translate([0, 0, beam_top_h2 + beam_top_h3]) + cylinder(r1=beam_top_r2, r2=beam_top_r3, h=beam_top_h4); + } + + if (include_struts) + for (i = [0:(2 * beam_intra_distance):(beam_height - 2*beam_intra_distance)]) + translate([0, 0, i]) { + rotate([45, 0, 90]) + cylinder(r=beam_radius/3, h=beam_intra_distance * sqrt(2)); + + translate([0, 0, 2*beam_intra_distance]) + rotate([135, 0, 90]) + cylinder(r=beam_radius/3, h=beam_intra_distance * sqrt(2)); + } + } +} + +module board() { + hull() + for (i = [0,1]) + translate([i * (beam_inter_distance - 2 * beam_intra_distance), 0, 0]) + rotate(i*120) + triangulate(beam_intra_distance) + cylinder(r=2*beam_radius, h=board_height); +} + +module board_bottom() { + color("lime") + render() + difference() { + board(); + translate([0, 0, -beam_height +board_height]) beam(false); + } +} + +module board_top() { + color("green") + render() + difference() { + board(); + translate([beam_inter_distance - 3 * beam_intra_distance, 0, -beam_height]) beam(false); + } +} + +module printer() { + triangulate(beam_inter_distance) { + beam(include_struts=true); + + translate([0, 0, beam_height - board_height]) + board_bottom(); + + translate([2 * beam_intra_distance, 0, beam_height]) + board_top(); + } +} + +printer(); |