//Design: Parametric shredder. //Date: 2014-10-20 //Version: 0.2 //Author: M. $fa=0.01; teeth=5; outer_diameter=55; inner_diameter=40; attack_angle=15; inner_angle=360/teeth; module axis_shape() {square([15,15],center=true);} //Main cutting disk outer_radius=outer_diameter/2; inner_radius=inner_diameter/2; difference(){ circle(r=outer_radius); union() { for (i=[1:teeth]) { rotate([0,0,360*i/teeth]) polygon([ [inner_radius,0], 2*outer_radius*[cos(attack_angle),-sin(attack_angle)], 2*outer_radius*[cos(inner_angle),-sin(inner_angle)]]); } axis_shape(); } } //Washer translate([2*outer_radius,0,0]) difference() { circle(r=inner_radius,center=true); axis_shape(); } //Outside closure translate([outer_radius, outer_diameter,0]) difference(){ polygon([ inner_radius*[cos(45),sin(45)], sqrt(2)*outer_radius*[cos(45),sin(45)], sqrt(2)*outer_radius*[cos(-45),sin(-45)], inner_radius*[cos(-45),sin(-45)] ]); circle(r=inner_radius); }