Skip to content

Instantly share code, notes, and snippets.

@ednisley
Last active February 1, 2016 22:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ednisley/50bea87ae0d7cc8a65fa to your computer and use it in GitHub Desktop.
Save ednisley/50bea87ae0d7cc8a65fa to your computer and use it in GitHub Desktop.
OpenSCAD Source Code: Olfa Rotary Cutter Spacer Washer
// Olfa rotary cutter backing washer
// Ed Nisley KE4ZNU January 2016
Layout = "Build";
//- Extrusion parameters must match reality!
// Print with +1 shells and 3 solid layers
ThreadThick = 0.20;
ThreadWidth = 0.40;
HoleWindage = 0.2;
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
Protrusion = 0.1; // make holes end cleanly
//----------------------
// Dimensions
WasherOD = 35.0;
WasherThick = 1.5;
WaveOD = 14.0; // wave washer flat dia
WaveM = 1.8; // height of wave washer bend
BendRad = (pow(WaveM,2) + pow(WaveOD,2)/4) / (2*WaveM); // radius of wave washer bend
echo(str("Wave washer bend radius: ",BendRad));
SpacerID = WaveOD + 2.0;
SpacerThick = 2*ThreadThick;
NumSides = 12*4;
$fn = NumSides;
//----------------------
// Useful routines
module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
FixDia = Dia / cos(180/Sides);
cylinder(r=(FixDia + HoleWindage)/2,
h=Height,
$fn=Sides);
}
//----------------------
// Parts
module Upper() {
difference() {
cylinder(d1=WasherOD,d2=(WasherOD - 2.0),h=WasherThick);
translate([0,0,-Protrusion])
intersection() {
PolyCyl(8.2,2.0,8);
cube([(6.0 + HoleWindage),10,2*WasherThick],center=true);
}
translate([-(WaveOD + 1.0)/2,0,BendRad])
rotate([0,90,0]) rotate(0*180/16)
PolyCyl(BendRad*2,(WaveOD + 1),16);
}
}
module Spacer() {
difference() {
cylinder(d=WasherOD,h=SpacerThick);
translate([0,0,-Protrusion])
cylinder(d=SpacerID,h=2*SpacerThick);
}
}
//----------------------
// Build it!
if (Layout == "Show") {
translate([0,0,SpacerThick])
color("Cyan")
Upper();
color("LightCyan")
Spacer();
}
if (Layout == "Build") {
translate([-0.6*WasherOD,0,0])
Upper();
translate([0.6*WasherOD,0,0])
Spacer();
}
@ednisley
Copy link
Author

ednisley commented Feb 1, 2016

More details on my blog at http://wp.me/poZKh-5xG

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment