-
Reinforced QD Propane Adapter Tool
Having just emptied a propane tank while making bacon, I couldn’t find any of the wrench adapters I made to remove the QD adapter from the tank’s POL fitting. With memory of the broken garden valve wrench still fresh, I tweaked the solid model to include a trio of 1 mm music wire reinforcements:

Propane QD Adapter Tool – reinforced – Slic3r Holes that small require clearing with a 1 mm drill, after which ramming the wires in place poses no problem:

Reinforced QD Adapter Tool – inserting wire Except for the one that got away:

Reinforced QD Adapter Tool – errant wire The music wire came from a coil and each snippet required gentle straightening; perhaps that one wasn’t sufficiently bar-straight.
Anyhow, I printed two tools for that very reason:

Reinforced QD Adapter Tool – side view They’re now where I can’t miss ’em the next time I need them, although that’s not where the previous ones reside.
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// Propane tank QD connector adapter tool // Ed Nisley KE4ZNU November 2012 // 2018-04-08 toss MCAD includes overboard // 2020-07-27 add reinforcing rods //- Extrusion parameters must match reality! // Print with about half a dozen perimeter threads and 50% infill ThreadThick = 0.25; ThreadWidth = 2.0 * ThreadThick; HoleWindage = 0.2; function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); Protrusion = 0.1; // make holes end cleanly inch = 25.4; //———————- // Dimensions WrenchSize = (5/8) * inch; // across the flats WrenchThick = 10; NoseDia = 8.6; NoseLength = 9.0; LockDia = 12.5; LockRingLength = 1.0; LockTaperLength = 1.5; TriDia = 15.1; TriWide = 12.2; // from OD across center to triangle side TriOffset = TriWide – TriDia/2; // from center to triangle side TriLength = 9.8; NeckDia = TriDia; NeckLength = 4.0; RebarOD = 1.0; // music wire pin 1 mm = 39 mil RebarLength = WrenchThick + NeckLength + TriLength; //———————- // 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… $fn = 4*6; union() { translate([0,0,(WrenchThick + NeckLength + TriLength – LockTaperLength – LockRingLength + Protrusion)]) cylinder(r1=NoseDia/2,r2=LockDia/2,h=LockTaperLength); translate([0,0,(WrenchThick + NeckLength + TriLength – LockRingLength)]) cylinder(r=LockDia/2,h=LockRingLength); difference() { union() { translate([0,0,WrenchThick/2]) cube([WrenchSize,WrenchSize,WrenchThick],center=true); cylinder(r=TriDia/2,h=(WrenchThick + NeckLength +TriLength)); cylinder(r=NoseDia/2,h=(WrenchThick + NeckLength + TriLength + NoseLength)); } for (a=[-1:1]) { rotate(a*120) translate([(TriOffset + WrenchSize/2),0,(WrenchThick + NeckLength + TriLength/2 + Protrusion/2)]) cube([WrenchSize,WrenchSize,(TriLength + Protrusion)],center=true); } for (a=[-1:1]) { rotate(a*120 + 60) translate([NoseDia/2,0,-Protrusion]) PolyCyl(RebarOD,RebarLength,6); } } }