//sgn, January 2022. //digitizer arm sketch //not really designed for public consumption, but here's the openscad code anyways. $fn = 32; //arm base base(); //base encoder translate([0,0,-5]) rotate([270,0,0]) encoder(); //omron rotary encoder side of base translate([0,46,54]) encoder(); //first arm translate([0,0,150]) rod(); //second arm translate([90,0,290]) rotate([0,75,0]) rod(); translate([250,0,210]) rotate([0,155,0]) rod(); //1st connector for rods 1-2 translate([0,0,267]) connector(); //omron rotary encoder first connector translate([0,46,267]) encoder(); //probe for if only 2 arms //translate([200,0,320]) //rotate([0,75,0]) //probe(); //2nd connector for Rods 2-3 translate([200,0,320]) rotate([0,75,0]) connector(); //omron rotary encoder first connector translate([200,46,320]) encoder(); //probe for 3 arms translate([287,0,130]) rotate([0,155,0]) probe(); //electronics box box(); module probe(){ cylinder(d = 70, h = 50, center = true); translate([0,0,-15]) cylinder(d = 20, h = 70, center = true); color("silver", 1){ translate([0,0,40]) cylinder(d = 3, h = 50, center = true); } color("red", 1){ translate([0,0,65]) sphere(d = 6); } } module connector(){ //arm rotary translate([0,0,0]) rotate([90,0,0]) cylinder(d = 40, h = 35, center = true); //arm rotary holder translate([0,22,0]) rotate([90,0,0]) cylinder(d = 55, h = 12, center = true); translate([0,6,-30]) cube([20,44,20], center = true); } module base(){ difference(){ union(){ //bottom translate([0,0,-28]) cylinder(d = 125, h = 14, center = true); //main case translate([0,0,-10]) cylinder(d = 75, h = 50, center = true); //arm bottom rotary holder translate([0,0,23]) cylinder(d = 75, h = 12.7, center = true); //arm side rod holder translate([0,-1,54]) rotate([90,0,0]) cylinder(d = 35, h = 30, center = true); //arm rotary base connector translate([0,22,54]) rotate([90,0,0]) cylinder(d = 67, h = 12.7, center = true); } //empty main body translate([0,0,-15]) cylinder(d = 55, h = 50, center = true); //through hole for rotary encoder shaft translate([0,0,12]) cylinder(d = 7, h = 40, center = true); } } module rod(){ //rod arm color("black", 1){ translate([0,0,0]) cylinder(d = 10, h = 200, center = true); } } module box(){ translate([0,200,-7]) cube([125,100,35], center = true); } module encoder(){ //body color("BurlyWood", 1.0){ rotate([0,90,90]) cylinder(d = 40, h = 33, center = true); } //shaft color("silver", 1.0){ translate([0,-25,0]) rotate([0,90,90]) cylinder(d = 6, h = 16, center = true); } }