chiark / gitweb /
toplevel-find: Support new //// toplevels-from: which precedes a include
[reprap-play.git] / filamentspool.scad
index 728ba69d23318f8b9ccb0cb48db5601c87b928bc..0eba9fae60abfc455e26d6871f9f26384e4e2a5b 100644 (file)
@@ -207,6 +207,12 @@ wingthick=3;
 armendwallthick=selsz(2.5, 1.8, 2.5);
 armendbasethick=selsz(1.2, 1.2, 1.2);
 
+numbers_relief = 0.7;
+numbers_tick_len = 8;
+numbers_tick_width = 0.75;
+numbers_tick_linespc = 1.0;
+numbers_height_allow = 8;
+
 axlehorizoffset = 12.5;
 axlevertheight = 100;
 towercliph = 16;
@@ -241,12 +247,18 @@ include <cliphook.scad>
 include <filamentteeth.scad>
 include <axlepin.scad>
 
+real_exteffrad = selsz(exteffrad,
+                      hubeffrad + DoveClip_depth(),
+                      hubeffrad + nondove_armbase);
+
 channelwidth = prongthick + channelslop;
 channeldepth = prongwidth + ratchettoothheight;
 totalwidth = armendwallthick*2 + channelwidth;
 totalheight = channeldepth + armendbasethick;
 stalkwidth = prongwidth + prongstalkxwidth;
 
+tau = PI*2;
+
 module ArmEnd(length=armend_length){ ////toplevel
   if (usedove()) {
     translate([ratchettoothsmoothr, channelwidth/2, -armendbasethick]) {
@@ -265,6 +277,35 @@ module ArmEnd(length=armend_length){ ////toplevel
     }
   }
 
+  for (otherside=[0,1]) {
+    for (circum = [300:100:1500]) {
+      assign(rad = circum / tau)
+       assign(fn = str("filamentspool-number-n",circum,".dxf"))
+       assign(rotateoffset = [0, totalwidth/2, 0])
+       assign(xlen = rad - real_exteffrad) {
+       if (xlen >= numbers_tick_width/2
+           + (otherside ? numbers_height_allow : 0) &&
+           xlen <= length - (otherside ? 0 : numbers_height_allow))
+         translate([xlen, -armendwallthick,
+                    -armendbasethick + (totalheight - numbers_tick_len)/2])
+         translate(rotateoffset)
+         rotate([0,0, otherside*180])
+         translate(-rotateoffset){
+           translate([-numbers_tick_width/2, -1, 0])
+             cube([numbers_tick_width, numbers_relief+1, numbers_tick_len]);
+           translate([numbers_tick_width/2 + numbers_tick_linespc,
+                      1,
+                      numbers_tick_len])
+             rotate([90,0,0])
+             rotate([0,0,-90])
+             linear_extrude(height= numbers_relief+1)
+             //    scale(templatescale)
+             import(file=fn, convexity=100);
+         }
+      }
+    }
+  }
+
   difference(){
     translate([0, -armendwallthick, -armendbasethick])
       cube([length, totalwidth, totalheight]);
@@ -897,10 +938,10 @@ module FilamentGuideArmPrint(){ ////toplevel
     FilamentGuideArm();
 }
 
-module Demo(){
-  translate([-hubeffrad-30,50,0]) Hub();
+module Demo(){ ////toplevel
+  translate([-real_exteffrad,-20,0]) Hub();
   ArmEnd();
-  translate([0,50,0]) FilamentCup();
+  translate([ratchettooth*2, 30, 0]) FilamentCup();
 }
 
 //ArmEnd();