chiark / gitweb /
filamentspool: FilamentGuideClipSpacerClip: fix wingheight bug
[reprap-play.git] / filamentspool.scad
index 981cf6e195e26e8650060ce454223f306e01cef2..98819b24cb0ef3d4647ac16bc77282dfbe37a53a 100644 (file)
@@ -1,6 +1,26 @@
 // -*- C -*-
 
-// Filament spool for filament coils as supplied by Faberdashery
+// filamentspool.scad
+// 3D design for filament spools to hold coils as supplied by Faberdashery
+//
+
+//
+// Copyright 2012,2013,2016 Ian Jackson
+//
+// This work is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This work is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this work.  If not, see <http://www.gnu.org/licenses/>
+//
+
 //
 // Each spool is a hub with 3 or 4 arms.  Each arm has a cup for
 // holding the filament.  The effective diameter can be adjusted by
@@ -20,9 +40,9 @@
 //            Hub
 //            ArmEnd x 4
 //            FilamentCup x 4  (or FilamentCupPair x 2)
-//            CupSecuringClup x 4
+//            CupSecuringClip x 4
 //
-//     You will also need  4 x M4 machine screws and nuts
+//     You will also need  4 x M4 machine screws and nuts.
 //
 //   - Light duty 3-armed spool suitable for up to around 30m
 //     of Faberdashery 2.85mm PLA.
@@ -34,7 +54,7 @@
 //           Hub
 //           ArmEnd x 3
 //           FilamentCup x 3  (or FilamentCup + FilamentCupPair)
-//           CupSecuringClup x 3
+//           CupSecuringClip x 3
 //           TowerDoveClipPin x 6
 //
 //     When assembling, insert one TowerDoveClipPin from each side,
 //     (note that the light duty and heavy duty CupSecuringClips
 //      are slightly different)
 //
+// When mounting either spool on the TAZ-5 spool arm, put the `pointy'
+// end of the hub towards the printer - ie, put put the spool on
+// `backwards'.  This ensures that the spool's arms will clear the
+// printer framework.
+//
 // For the above, I generally used the Cura `Standard' PLA profile.
 //
 //   - Storage arm suitable for screwing to walls, bookshelves,
@@ -651,6 +676,65 @@ module StorArmHoleTest(){ ////toplevel
 }
 
 
+//----- filament guide spacer -----
+
+guide_armdia = 15.0 + 0.75;
+guide_armwidth = 10.2 + 0.75;
+
+guidefilclip_outerdia = 22.8;
+
+guidespacer_prongprotrude = 4;
+guidespacer_thick = 1.6;
+guidespacer_len = 15.3 + 0.75;
+
+// calculated
+
+guidespacer_wingheight = (guidefilclip_outerdia - guide_armdia)/2;
+
+module FilamentGuideArmTemplate(extra=0){
+  intersection(){
+    circle(r= (guide_armdia/2) + extra);
+    square(center=true, [guide_armwidth+extra*2,
+                        guide_armdia + extra*2 + 10]);
+  }
+}
+
+module FilamentGuideSpacerInnerTemplate(){
+  FilamentGuideArmTemplate();
+  translate([0, -guide_armdia/2])
+    square(center=true, [guide_armwidth - guidespacer_prongprotrude,
+                        guide_armdia]);
+}
+
+module FilamentGuideSpacer(){ ////toplevel
+  difference(){
+    union(){
+      linear_extrude(height= guidespacer_len)
+       FilamentGuideArmTemplate(extra= guidespacer_thick);
+      for (angle=[26, 60]) {
+       for (m=[0,1]) {
+         mirror([m,0,0]) {
+           rotate([0,0,angle]) {
+             hull(){
+               for (t=[[0, guidespacer_wingheight],
+                       [guidespacer_len-1, -guidespacer_wingheight]])
+                 translate([0,0, t[0] + 0.5])
+                   cube([guidespacer_thick, guide_armdia + t[1]*2,
+                     1],
+                        center=true);
+             }
+           }
+         }
+       }
+      }
+    }
+    translate([0,0,-1])
+      linear_extrude(height= guidespacer_len+5)
+      FilamentGuideSpacerInnerTemplate();
+  }
+}
+
+
 module Demo(){
   translate([-hubeffrad-30,50,0]) Hub();
   ArmEnd();