Skip to content

Instantly share code, notes, and snippets.

@ednisley
Created April 16, 2018 21:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ednisley/0f042a37499c53aa617fe32c036d6c73 to your computer and use it in GitHub Desktop.
Save ednisley/0f042a37499c53aa617fe32c036d6c73 to your computer and use it in GitHub Desktop.
OpenSCAD source code: Propane tank QD fitting wrench adapter
// Propane tank QD connector adapter tool
// Ed Nisley KE4ZNU November 2012
// 2018-04-08 toss MCAD includes overboard
//- 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;
//----------------------
// 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);
}
/*
module ShowPegGrid(Space = 10.0,Size = 1.0) {
Range = floor(50 / Space);
for (x=[-Range:Range])
for (y=[-Range:Range])
translate([x*Space,y*Space,Size/2])
%cube(Size,center=true);
}
*/
//-------------------
// Build it...
$fn = 4*6;
//ShowPegGrid();
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);
}
}
}
@ednisley
Copy link
Author

More details on my blog at https://wp.me/poZKh-7sQ

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