Skip to content

Instantly share code, notes, and snippets.

@ednisley
Created December 29, 2025 19:17
Show Gist options
  • Select an option

  • Save ednisley/1a2525d5f2dc7b16dbc620267b7bb5c8 to your computer and use it in GitHub Desktop.

Select an option

Save ednisley/1a2525d5f2dc7b16dbc620267b7bb5c8 to your computer and use it in GitHub Desktop.
OpenSCAD source code: Bullnose & cup centers for Ortur YRC-1 rotary
// Ortur Rotary Conical centers
// Ed Nisley - KE4ZNU
// 2025-12-27
include <BOSL2/std.scad>
Style = "Bullnose"; // [Build,Cone,Bullnose,Cup,Cone]
MinDia = 10.0;
MaxDia = 50.0;
/* [Hidden] */
LayerThick = 0.2; // should match slicer thickness
Ramp = 1.0;
ID = 0;
OD = 1;
LENGTH = 2;
HoleWindage = 0.2;
Protrusion = 0.1;
NumSides = 8*3*4;
$fn=NumSides;
Gap = 5.0;
WallThick = 2.0;
TailBearing = [5.0,7.0,10.0]; // tailstock shaft, LENGTH = insert depth
StepHeight = 2*LayerThick;
NumSteps = (((MaxDia - MinDia)/2) / Ramp);
ConeOAH = NumSteps * (Ramp + StepHeight);
//-----
// Bullnose shape
module Bullnose() {
difference() {
union()
for (i = [0:NumSteps - 1])
up(i*(Ramp + StepHeight)) hull()
cyl(StepHeight + Protrusion,r=(MaxDia/2 - i*Ramp),anchor=BOTTOM) position(TOP)
cyl(Ramp,r1=(MaxDia/2 - i*Ramp),r2=(MaxDia/2 - (i+1)*Ramp),anchor=BOTTOM);
}
}
module Cone() {
difference() {
Bullnose();
down(Protrusion)
cyl(TailBearing[LENGTH] + Protrusion,d=TailBearing[ID],circum=true,anchor=BOTTOM);
}
}
module Cup() {
difference() {
cyl(ConeOAH + TailBearing[LENGTH],d=MaxDia + 2*WallThick,anchor=BOTTOM);
up(ConeOAH + TailBearing[LENGTH] + Protrusion)
yrot(180)
Bullnose();
down(Protrusion)
cyl(TailBearing[LENGTH] + 2*Protrusion,d=TailBearing[ID],circum=true,anchor=BOTTOM);
}
}
//-----
// Build things
if (Style == "Bullnose")
Bullnose();
if (Style == "Cone")
Cone();
if (Style == "Cup")
Cup();
if (Style == "Build") {
right(MaxDia/2 + Gap)
Cone();
left(MaxDia/2 + WallThick + Gap)
Cup();
}
@ednisley
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment