chiark / gitweb /
filamentspool: FilamentGuideArm: wip
[reprap-play.git] / filamentspool.scad
index 637a72ad4311208d2913a17f11dedbdd31f79f23..33ccba1a20a47ce0fea0b1739ad713772979378c 100644 (file)
@@ -751,17 +751,30 @@ guidearm_hookprotr = 4;
 guidearm_hookprotrflat = 1;
 guidearm_hookslope = 0.3;
 
+guidearm_totallen = 60;
+
+guidearm_screwplatesz = 12;
+guidearm_screwplateth = 4;
+guidearm_screwhole = 4 + 0.5;
+
+guidearm_bendlen = 50;
+
 // calculated
 
 guidearm_armdia = guide_armdia - guidearm_armslop;
 guidearm_armwidth = guide_armwidth - guidearm_armslop;
 guidearm_armcorelen = guide_armcorelen + guidearm_armlenslop;
 
+guidearm_base_z0 = -(guidearm_totallen - guidearm_armcorelen);
+
+guidearm_realbendlen = max(guidearm_bendlen,
+                          guidearm_totallen - guidearm_screwplateth - 0.1);
+
 module FilamentGuideArmShaftPositive(){
   r = guidearm_armdia/2;
 
-  translate([0,0,-1])
-    cylinder(r=r, h= guidearm_armcorelen+2);
+  translate([0,0, guidearm_base_z0+1])
+    cylinder(r=r, h= guidearm_totallen);
   translate([0,0, guidearm_armcorelen]){
     hull(){
       for (ts=[-1,+1]) {
@@ -774,8 +787,33 @@ module FilamentGuideArmShaftPositive(){
   }
 }
 
+module FilamentGuideArmBase(){
+  translate([0,0, guidearm_base_z0]){
+    difference(){
+      translate([0,0, guidearm_screwplateth/2])
+       cube(center=true,
+            [guidearm_armdia + guidearm_screwplatesz*2,
+             guidearm_armwidth,
+             guidearm_screwplateth]);
+      for (ts=[-1,+1]) {
+       translate([ts * (guidearm_armdia/2 + guidearm_screwplatesz/2),
+                  0,
+                  -20])
+         cylinder(r= guidearm_screwhole/2, h=40);
+      }
+    }
+  }
+}
+
 module FilamentGuideArm(){ ///toplevel
-  FilamentGuideArmShaftPositive();
+  intersection(){
+    FilamentGuideArmShaftPositive();
+    cube(center=true,
+        [guidearm_armdia*2,
+         guidearm_armwidth,
+         guidearm_totallen*3]);
+  }
+  FilamentGuideArmBase();
 }