// -*- 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
// 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.
// 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,
}
+//----- filament guide spacer -----
+
+guide_armdia = 15.0;
+guide_armwidth = 10.2;
+
+guidefilclip_outerdia = 22.8;
+
+guidespacer_armslop = 0.75;
+
+guidespacer_prongprotrude = 4;
+guidespacer_thick = 1.6;
+guidespacer_len = 15.3 + 0.75;
+
+// calculated
+
+guidespacer_armdia = guide_armdia + guidespacer_armslop;
+guidespacer_armwidth = guide_armwidth + guidespacer_armslop;
+
+guidespacer_wingheight = (guidefilclip_outerdia - guidespacer_armdia)/2;
+
+module FilamentGuideArmTemplate(extra=0){
+ intersection(){
+ circle(r= (guidespacer_armdia/2) + extra);
+ square(center=true, [guidespacer_armwidth+extra*2,
+ guidespacer_armdia + extra*2 + 10]);
+ }
+}
+
+module FilamentGuideSpacerInnerTemplate(){
+ FilamentGuideArmTemplate();
+ translate([0, -guidespacer_armdia/2])
+ square(center=true, [guidespacer_armwidth - guidespacer_prongprotrude,
+ guidespacer_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, guidespacer_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();