-
Laser Cutter: Mirror Pin Wrench
After struggling with pin pliers again, I finally made a pin wrench for the laser cutter’s mirror retaining rings:

Laser Mirror Pin Wrench – in use The odd grayish tint toward the flat end of the knob comes from residual black filament in the hot end after switching to retina-burn orange PETG.
The solid model looks about like you’d expect:

Mirror Pin Wrench – Solid Model The pins are snippets of 3/32 inch = 2.4 mm steel rod with ground-round ends to fit the 2.5 mm pin sockets in the retaining ring.
They’re rammed into place with a drill press to keep them aligned with the holes:

Laser Mirror Pin Wrench – pin insertion Pressed flush with the central boss that aligns the wrench with the ring:

Laser Mirror Pin Wrench – pin leveling Then put the ring on the bench, set the wrench atop the ring with the pins in the sockets, and press firmly to seat the pins to the proper depth. The end results should look like this:

Laser Mirror Pin Wrench – mirror ring test The next time I clean the mirrors, there will be less muttering.
The OpenSCAD source code as a GitHub Gist:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters// OMTech laser cutter mirror pin wrench // Ed Nisley – KE4ZNU – August 2023 // From https://www.thingiverse.com/thing:4146258 use <knurledFinishLib_v2_1.scad> /* [Hidden] */ ThreadThick = 0.20; ThreadWidth = 0.40; HoleWindage = 0.2; // extra clearance Protrusion = 0.1; // make holes end cleanly inch = 25.4; //———————- // Dimensions /* [Knob] */ PinDia = 2.4; // pin diameter PinOC = 20.5; // … on-center spacing PinDepth = 10.0; // … hole depth LocDia = 14.5; // central stud LocLength = 3.0; ShaftDia = 26.0; // un-knurled section diameter ShaftLength = 15.0; // … length KnurlDia = 30.0; // diameter at midline of knurl diamonds KnurlLen = 20.0; // … length of knurled section /* [Hidden] */ KnurlDPNom = 32; // Nominal diametral pitch = (# diamonds) / (OD inches) DiamondDepth = 0.5; // … depth of diamonds DiamondAspect = 2; // length to width ratio KnurlID = KnurlDia – DiamondDepth; // dia at bottom of knurl NumDiamonds = ceil(KnurlDPNom * KnurlID / inch); echo(str("Num diamonds: ",NumDiamonds)); NumSides = 4*NumDiamonds; // 4 facets per diamond KnurlDP = NumDiamonds / (KnurlID / inch); // actual DP echo(str("DP Nom: ",KnurlDPNom," actual: ",KnurlDP)); DiamondWidth = (KnurlID * PI) / NumDiamonds; DiamondLenNom = DiamondAspect * DiamondWidth; // nominal diamond length DiamondLength = KnurlLen / round(KnurlLen/DiamondLenNom); // … actual TaperLength = 0.75*DiamondLength; KnobOAL = ShaftLength + KnurlLen + 2*TaperLength; //———————- // Useful routines module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2); FixDia = Dia / cos(180/Sides); cylinder(r=(FixDia + HoleWindage)/2, h=Height, $fn=Sides); } //- Build it difference() { union() { render(convexity=10) translate([0,0,TaperLength]) knurl(k_cyl_hg=KnurlLen, k_cyl_od=KnurlDia, knurl_wd=DiamondWidth, knurl_hg=DiamondLength, knurl_dp=DiamondDepth, e_smooth=DiamondLength/2); color("Orange") cylinder(r1=ShaftDia/2, r2=(KnurlDia – DiamondDepth)/2, h=(TaperLength + Protrusion), $fn=NumSides); color("Orange") translate([0,0,(TaperLength + KnurlLen – Protrusion)]) cylinder(r2=ShaftDia/2, r1=(KnurlDia – DiamondDepth)/2, h=(TaperLength + Protrusion), $fn=NumSides); color("Moccasin") translate([0,0,(2*TaperLength + KnurlLen – Protrusion)]) cylinder(r=ShaftDia/2,h=(ShaftLength + Protrusion),$fn=NumSides); color("Brown") translate([0,0,KnobOAL – Protrusion]) cylinder(r=LocDia/2,h=(LocLength + Protrusion),$fn=NumSides); } for (i=[-1,1]) translate([i*PinOC/2,0,KnobOAL – PinDepth]) rotate(180/6) PolyCyl(PinDia,PinDepth + Protrusion,6); } It descends from a long line of similar things dating back to the OG Sherline Speed Wrenches.