chiark / gitweb /
sprinkler-spike-receptacle: Main
[reprap-play.git] / sprinkler-spike-receptacle.scad
index 09d596f9fd2139a467fffdb63ffc421a1c62f4d8..296c9e0f8e6a32e4eb33622d6fdba7f3bac772df 100644 (file)
@@ -2,6 +2,8 @@
 
 main_height = 95;
 
+spike_web_thick = 2.52 + 0.5;
+
 spike_top_width = 21.04;
 
 spike_botpos_height = 9.5;
@@ -9,6 +11,13 @@ spike_botpos_width = 11.68;
 
 topwall_width = 1.5;
 
+mount_dist = 20;
+mount_width = 10;
+mount_height = 5;
+mount_hole_dia = 4.5;
+mount_head_dia = 7.5;
+mount_hole_th = 2.5;
+
 // calculated
 
 main_width = spike_top_width + topwall_width*2;
@@ -38,6 +47,51 @@ module PositivePlan(){
     square([ w, main_height ]);
 }
 
+module MultiplySolidifyPlan(th){
+  for (r=[0,90]) {
+    rotate([0,0,r])
+      rotate([90,0,0])
+      translate([0,0,-th/2])
+      linear_extrude(height=th)
+      children(0);
+  }
+}
+
+module MultiplyForMount(){
+  for (r=[0:90:270])
+    rotate([0,0,r])
+    children(0);
+}
+
+module Mount(){
+  translate([ -1,
+             -mount_width/2,
+             0 ])
+    cube([ mount_dist + mount_width/2 + 1,
+          mount_width,
+          mount_height ]);
+}
+
+module MountHole(){
+  translate([ mount_dist, 0,0 ]) {
+    translate([0,0, -1])
+      cylinder(r= mount_hole_dia/2, h= 20, $fn=20);
+    translate([0,0, mount_hole_th])
+      cylinder(r = mount_head_dia/2, h=20, $fn=20);
+  }
+}
+
+module Main(){
+  difference(){
+    union(){
+      MultiplySolidifyPlan(spike_web_thick + topwall_width*2) PositivePlan();
+      MultiplyForMount() Mount();
+    }
+    MultiplySolidifyPlan(spike_web_thick) NegativePlan();
+    MultiplyForMount() MountHole();
+  }
+}
+
 module PlanTest(){
   linear_extrude(height=2.0){
     difference(){
@@ -58,4 +112,5 @@ module PlanTest(){
   }
 }
 
-PlanTest();
+//PlanTest();
+Main();