summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Huwald <jh@sotun.de>2018-07-23 10:42:19 (GMT)
committerJan Huwald <jh@sotun.de>2018-07-23 10:42:19 (GMT)
commit17eade7b2b86ef56fca70ab8e4df5ad81730b202 (patch)
treefe26a1c621f3b2fd7fbe76d204f29feea73f587f
Initial commit
-rw-r--r--board_bottom.scad3
-rw-r--r--board_top.scad3
-rw-r--r--stagedelta.scad92
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();
contact: Jan Huwald // Impressum