Files are almost all done:
- Test Print (shaft diameter) - Done
- Test Print 2 (hex locknut) - Done
- Eject pins - Done
- Handle top - Done, but might add CircleLogo option added
- DE_Arrow.svg (Inkscape) - Done
- DE_Arrow.dxf (Inkscape) - Done
- DE_Logo.svg (Inkscape) - Done
- DE_Logo.dxf (Inkscape) - Done
- DE_CircleLogo.svg (Inkscape) - Might add this option Done
- DE_CircleLogo.dxf (Inkscape) - Might add this option Done
- Diagram - Done
- Handle - Confirm your panel thickness measurement, set ShaftHeight variable, and add comments
These two test prints confirm whether several important variable values will or will not work with your particular combination of printer and joystick/hardware.
Test Print -- hardware tested:
- Joystick M6 threaded diameter (clears without engaging threads)
- Joystick shaft diameter (snug fit)
// Data East rotary joystick handle (balltop replacement)
// - Test print
// Other prints needed:
// -- Test print2
// -- Handle
// -- Handle top
// -- Eject pin (2 pins per handle)
// This test print allows you to verify the correct variable values for your specific hardware and your slicer software before you render/export/print the whole handle.
// Hardware tested:
// - Joystick M6 threaded diameter (clears without engaging threads)
// - Joystick shaft diameter (snug fit)
// This part is oriented upside-down compared to the handle so print supports are not needed.
/////////////////////////////
// Define variables
/////////////////////////////
ShaftDiameter = 9.35; // Default = 9.35
ShaftHeight = 9; // Default = 9
ThreadedDiameter = 6.2; // Default = 6.2
// The diameter values may need to be *very slightly* larger to account for the 180-sided polygon used to render circles -- see "undersized holes" at https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#cylinder
$fn=180; // Number of fragments (polygon sides) used to render a circle
/////////////////////////////
// Make the part
/////////////////////////////
// Make the shaft test layer
difference() {
cylinder(ShaftHeight, d=ShaftDiameter+6, center=true); // Shaft outer cylinder
cylinder(ShaftHeight+2, d=ShaftDiameter, center=true);
// Remove Shaft Collar hole
}
//
// Make the thread test layer (red)
difference() {
color("red") translate([0,0,-1 - ShaftHeight/2]) cylinder(2, d=ShaftDiameter + 6, center=true);
// Outer cylinder
translate([0,0,-1 - ShaftHeight/2]) cylinder(ShaftHeight, d=ThreadedDiameter, center=true);
// Remove threaded hole
}
Test Print 2 -- hardware tested:
- Joystick M6 threaded diameter (clears without engaging threads)
- Locknut (snug fit)
// Data East rotary joystick handle (balltop replacement)
// - Test print 2
// Other prints needed:
// -- Test print
// -- Handle
// -- Handle top
// -- Eject pin (2 pins per handle)
// This test print allows you to verify the correct variable values for your specific hardware and your slicer software before you render/export/print the whole handle.
// Hardware tested:
// - Joystick M6 threaded diameter (clears without engaging threads)
// - Locknut (snug fit)
/////////////////////////////
// Define variables
/////////////////////////////
LocknutDiameter = 11.65; // Default = 11.55 + wiggle room
// 10mm flat-to-flat = 11.55mm point-to-point
LocknutHeight = 9; // Default = 9
ThreadedDiameter = 6.2; // Default = 6.2
// The diameter values may need to be *very slightly* larger to account for the 180-sided polygon used to render circles -- see "undersized holes" at https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#cylinder
$fn=180; // Number of fragments (polygon sides) used to render a circle
/////////////////////////////
// Make the part
/////////////////////////////
// Make the locknut test layer
difference() {
hull() { // Make outer hexagon
rotate ([0, 0, 0]) translate ([3 + LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight, d = 0.01, center=true);
rotate ([0, 0, 60]) translate ([3 + LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight, d = 0.01, center=true);
rotate ([0, 0, 120]) translate ([3 + LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight, d = 0.01, center=true);
rotate ([0, 0, 180]) translate ([3 + LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight, d = 0.01, center=true);
rotate ([0, 0, 240]) translate ([3 + LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight, d = 0.01, center=true);
rotate ([0, 0, 300]) translate ([3 + LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight, d = 0.01, center=true);
}
hull() { // Remove inner hexagon
translate ([0, 0, 0])
rotate ([0, 0, 0]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);
translate ([0, 0, 0])
rotate ([0, 0, 60]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);
translate ([0, 0, 0])
rotate ([0, 0, 120]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);
translate ([0, 0, 0])
rotate ([0, 0, 180]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);
translate ([0, 0, 0])
rotate ([0, 0, 240]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);
translate ([0, 0, 0])
rotate ([0, 0, 300]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);
}
}
//
// Make the thread test layer (red)
difference() {
color("red") translate([0,0,-1 - LocknutHeight/2]) cylinder(2, d=LocknutDiameter + 6, center=true);
// Outer cylinder
translate([0,0,-1 - LocknutHeight/2]) cylinder(LocknutHeight, d=ThreadedDiameter, center=true);
// Remove threaded hole
}
Scott