The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Ortur YRC-1: Petite Chuck Jaws

The standard jaws for the Ortur Rotary loom over small-diameter workpieces:

Ortur Rotary Focus Pad - home offset adjustment
Ortur Rotary Focus Pad – home offset adjustment

Some measuring and modeling produced petite 3D printed jaws:

Ortur Rotary - printed jaws
Ortur Rotary – printed jaws

Admittedly, those jaws aren’t doing much of anything, but they’re not nearly as much in the way. You (well, I) can screw them in closer to the center to overlap the chuck jaws or another hole outward for slightly larger cylinders.

The solid model looks about the same:

Ortur Rotary Jaws - 2-3 show view
Ortur Rotary Jaws – 2-3 show view

They build face-down with a little support under the screw recesses for a clean fit on the chuck:

Ortur Rotary Jaws - Prusaslicer
Ortur Rotary Jaws – Prusaslicer

Teeny jaws might be handy:

Ortur Rotary Jaws - 2-2 show view
Ortur Rotary Jaws – 2-2 show view

Screwing them in one hole outward lets them grip medium cylinders without sticking out from the chuck jaws:

Ortur Rotary - small printed jaws
Ortur Rotary – small printed jaws

The OpenSCAD code lets you pick which screw holes you want, but it does not error-check the perverse choices.

The OpenSCAD source code as a GitHub Gist:

// Ortur Rotary Focus Pad
// Ed Nisley – KE4ZNU
// 2026-01-04
include <BOSL2/std.scad>
Style = "Show"; // [Build,Show,Chuck,ChuckJaw,Jaw]
InnerScrew = 1; // [0:3]
OuterScrew = 3; // [2:4]
/* [Hidden] */
ID = 0;
OD = 1;
LENGTH = 2;
HoleWindage = 0.2;
Protrusion = 0.1;
Gap = 5.0;
NumSides = 8*3*4;
$fn=NumSides;
WallThick = 2.0;
ScrewHead = [4.0 + HoleWindage,7.0 + HoleWindage,4.0];
ChuckOD = 66.0;
ChuckThick = 10.0;
ChuckBCR = [3.5,7.5,15.0,22.5,30.0]; // M4 tapped in chuck jaws
ChuckJawOA = [ChuckOD/2,8.0 + HoleWindage,3.5];
JawBlock = [0,15.0,2*WallThick + ScrewHead[LENGTH]]; // .x will be variable
JawRound = 1.0; // tip rounding
//—–
// Single chuck jaw with holes
module ChuckJaw(Holes=true) {
difference() {
intersection() {
cuboid(ChuckJawOA,anchor=BOTTOM+LEFT);
cyl(ChuckJawOA.z,d=ChuckOD,anchor=BOTTOM);
linear_extrude(h=ChuckJawOA.z)
hexagon(od=ChuckOD,rounding=2.0,anchor=LEFT);
}
if (Holes)
for (i = [0:len(ChuckBCR)-1])
right(ChuckBCR[i])
down(Protrusion)
cyl(2*ChuckJawOA.z,d=ScrewHead[ID],anchor=BOTTOM);
}
}
// Chuck layout
module Chuck(Holes=true) {
cyl(ChuckThick,d=ChuckOD,anchor=TOP) position(TOP)
for (a = [0:120:360])
zrot(a)
ChuckJaw(Holes);
}
// Gripping jaw
module Jaw(Screws=[1,3]) {
HoleOC = ChuckBCR[Screws[1]] – ChuckBCR[Screws[0]];
JawOAL = HoleOC + ScrewHead[OD] + 2*WallThick + (JawBlock.y/2)/cos(30);
difference() {
left(JawOAL/2)
intersection() {
cuboid(JawBlock + [JawOAL,0,0],anchor=BOTTOM+LEFT);
linear_extrude(h=JawBlock.z)
hexagon(od=ChuckOD,rounding=JawRound,anchor=LEFT);
right(JawOAL)
linear_extrude(h=JawBlock.z)
hexagon(od=ChuckOD,rounding=JawRound,anchor=RIGHT);
}
right(0*JawOAL/2)
for (i=[-1,1])
right(i*HoleOC/2) {
down(Protrusion)
cyl(JawBlock.z,d=ScrewHead[ID],anchor=BOTTOM);
up(2*WallThick)
cyl(JawBlock.z,d=ScrewHead[OD],anchor=BOTTOM);
}
down(Protrusion)
cuboid([JawOAL,ChuckJawOA.y,WallThick + Protrusion],anchor=BOTTOM);
}
}
//—–
// Build things
if (Style == "Chuck") {
Chuck();
}
if (Style == "Show") {
xrot(180)
yrot(90) {
color("Gray",0.8)
Chuck();
up(ChuckJawOA.z – WallThick)
for (a = [0:120:360])
zrot(a)
right((ChuckBCR[InnerScrew] + ChuckBCR[OuterScrew])/2)
Jaw(Screws=[InnerScrew,OuterScrew]);
}
}
if (Style == "ChuckJaw")
ChuckJaw();
if (Style == "Jaw") {
Jaw(Screws=[InnerScrew,OuterScrew]);
}
if (Style == "Build")
for (j=[-1:1])
fwd(j*(JawBlock.y + Gap))
up(JawBlock.z) xrot(180)
Jaw(Screws=[InnerScrew,OuterScrew]);

Comments

Spam comments get trashed, so don’t bother. Comment moderation may cause a delay.