64 lines
2.0 KiB
OpenSCAD
64 lines
2.0 KiB
OpenSCAD
|
height = 13.25;
|
||
|
topDiameter =9.75;
|
||
|
lowerDiameter = 10.85;
|
||
|
stepDiameter = 9;
|
||
|
stepDepth = 1.5;
|
||
|
|
||
|
crossDepth = .75; // original mesurement ~0.25
|
||
|
crossWidth = 2.25;
|
||
|
crossStartHeight = 2;
|
||
|
|
||
|
// mostly not really measured
|
||
|
chamferHeight = 10;
|
||
|
chamferDiameter = topDiameter-crossDepth*2;
|
||
|
|
||
|
// measured from metal pole, not plastic knob
|
||
|
knobDepth = 7;
|
||
|
knobDiameter = 4.75;
|
||
|
knobFlatDiameter = 4;
|
||
|
knobTolerance = 0.1;
|
||
|
|
||
|
$fn = 100;
|
||
|
|
||
|
difference () {
|
||
|
union() {
|
||
|
translate([0,0,stepDepth]) {
|
||
|
difference() {
|
||
|
// main exterior
|
||
|
intersection() {
|
||
|
cylinder(r1=lowerDiameter/2, r2=topDiameter/2, h=height-stepDepth);
|
||
|
// chamfer
|
||
|
union() {
|
||
|
translate([0,0,chamferHeight])
|
||
|
cylinder(r1=lowerDiameter/2, r2=chamferDiameter/2, h=height-stepDepth-chamferHeight);
|
||
|
cylinder(r=lowerDiameter/2, h=chamferHeight);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// cross
|
||
|
difference() {
|
||
|
union() translate([0, 0, height/2 - .01]) {
|
||
|
cube([lowerDiameter, crossWidth, height], center=true);
|
||
|
cube([crossWidth, lowerDiameter, height], center=true);
|
||
|
}
|
||
|
// put back the middle
|
||
|
cylinder(r1=lowerDiameter/2 - crossDepth,
|
||
|
r2=topDiameter/2 - crossDepth, h=height-stepDepth);
|
||
|
// put back the bottom
|
||
|
cylinder(r=lowerDiameter, h=crossStartHeight);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//bottom step
|
||
|
cylinder(r=stepDiameter/2, h=stepDepth+0.01);
|
||
|
}
|
||
|
|
||
|
//inner concavity
|
||
|
difference() {
|
||
|
translate([0,0,-0.01]) cylinder(d=knobDiameter + knobTolerance*4, h=knobDepth + 0.01);
|
||
|
#translate([-stepDiameter/2, knobFlatDiameter - knobDiameter/2 + knobTolerance*5, 0])
|
||
|
cube([stepDiameter, stepDiameter, height]);
|
||
|
}
|
||
|
}
|