diff --git a/servos.scad b/servos.scad new file mode 100644 index 0000000..a635a97 --- /dev/null +++ b/servos.scad @@ -0,0 +1,108 @@ +/** + * Servo outline library + * + * Authors: + * - Eero 'rambo' af Heurlin 2010- + * + * License: LGPL 2.1 + */ + +use + +/** + * Align DS420 digital servo + * + * @param vector position The position vector + * @param vector rotation The rotation vector + * @param boolean screws If defined then "screws" will be added and when the module is differenced() from something if will have holes for the screws + * @param number axle_lenght If defined this will draw "backgound" indicator for the main axle + */ +module alignds420(position, rotation, screws = 0, axle_lenght = 0) +{ + translate(position) + { + rotate(rotation) + { + union() + { + // Main axle + translate([0,0,17]) + { + cylinder(r=6, h=8, $fn=30); + cylinder(r=2.5, h=10.5, $fn=20); + } + // Box and ears + translate([-6,-6,0]) + { + cube([12, 22.8,19.5], false); + translate([0,-5, 17]) + { + cube([12, 7, 2.5]); + } + translate([0, 20.8, 17]) + { + cube([12, 7, 2.5]); + } + } + if (screws > 0) + { + translate([0,(-10.2 + 1.8),11.5]) + { + # cylinder(r=1.8/2, h=6, $fn=6); + } + translate([0,(21.0 - 1.8),11.5]) + { + # cylinder(r=1.8/2, h=6, $fn=6); + } + + } + // The large slope + translate([-6,0,19]) + { + rotate([90,0,90]) + { + triangle(4, 18, 12); + } + } + + /** + * This seems to get too complex fast + // Small additional axes + translate([0,6,17]) + { + cylinder(r=2.5, h=6, $fn=10); + cylinder(r=1.25, h=8, $fn=10); + } + // Small slope + difference() + { + translate([-6,-6,19.0]) + { + cube([12,6.5,4]); + } + translate([7,-7,24.0]) + { + rotate([-90,0,90]) + { + triangle(3, 8, 14); + } + } + + } + */ + // So we render a cube instead of the small slope on a cube + translate([-6,-6,19.0]) + { + cube([12,6.5,4]); + } + } + if (axle_lenght > 0) + { + % cylinder(r=0.9, h=axle_lenght, center=true, $fn=8); + } + } + } +} + +// Example, uncomment to test +alignds420(screws=1); diff --git a/triangles.scad b/triangles.scad new file mode 100644 index 0000000..76a4822 --- /dev/null +++ b/triangles.scad @@ -0,0 +1,55 @@ +/** + * Simple triangles library + * + * Authors: + * - Eero 'rambo' af Heurlin 2010- + * + * License: LGPL 2.1 + */ + + +/** + * Standard right-angled triangle + * + * @param number o_len Lenght of the opposite side + * @param number a_len Lenght of the adjacent side + * @param number depth How wide/deep the triangle is in the 3rd dimension + */ +/* +module triangle(o_len, a_len, depth) +{ + difference() + { + cube([depth, a_len, o_len], center=false); + rotate([atan(o_len/a_len),0,0]) + { + translate([-2.5,0,0]) + { + cube([depth+5,sqrt(pow(a_len, 2) + pow(o_len,2))+2, o_len+2], center=false); + } + } + } +} + +# triangle(5,10,7); +*/ + + +/** + * Standard right-angled triangle + * + * @param number o_len Lenght of the opposite side + * @param number a_len Lenght of the adjacent side + * @param number depth How wide/deep the triangle is in the 3rd dimension + * @todo a better way ? + */ +module triangle(o_len, a_len, depth) +{ + linear_extrude(height=depth) + { + polygon(points=[[0,0],[a_len,0],[0,o_len]], paths=[[0,1,2]]); + } +} + +triangle(5,10,7); +