Parametric Adapter
GPT 5.6 terra · legacy
Reviews & generation details
Reviews
No human review yet. Unreviewed does not mean unsuccessful.
Generation context
Imported historical artifact. Its exact original instructions and lineage are not known.
Generation prompt · exact text unavailable
See the current prompt for reference. It may differ from the instructions used to generate this artifact.
Inspect original source 3,010 bytes · SHA-256 bcec3cab610f
// 3/4 in GHT female to 1/2 in NPT male adapter
// Requires BOSL2: https://github.com/BelfrySCAD/BOSL2
// Print with the GHT end on the build plate. Thread dimensions are nominal;
// tune THREAD_CLEARANCE for the particular printer and mating fitting.
include <BOSL2/std.scad>
include <BOSL2/threading.scad>
$fn = 96;
// Nominal thread data, in millimetres.
GHT_MAJOR_D = 26.90; // 3/4-11.5 NH (garden hose thread)
GHT_PITCH = 25.4 / 11.5;
GHT_THREAD_LENGTH = 15.0;
NPT_MAJOR_D = 21.223; // 1/2-14 NPT large-end major diameter
NPT_PITCH = 25.4 / 14;
NPT_THREAD_LENGTH = 16.0;
NPT_TAPER = 1/16; // diameter taper per unit length
THREAD_CLEARANCE = 0.25;
// Body dimensions.
HOSE_OD = 34;
HOSE_LENGTH = 22;
HEX_AF = 27;
HEX_LENGTH = 10;
THROAT_D = 16;
BORE_D = 13;
WASHER_SEAT_D = 29;
WASHER_SEAT_H = 2.2;
module ght_female_end() {
// The internal-thread tool is subtracted from a stout hose-nut shell.
difference() {
cylinder(d=HOSE_OD, h=HOSE_LENGTH);
// Flat seat for a standard garden-hose washer, at the open end.
translate([0, 0, HOSE_LENGTH-WASHER_SEAT_H])
cylinder(d=WASHER_SEAT_D, h=WASHER_SEAT_H+0.02);
// BOSL2's internal thread includes the helical female thread form.
// Its small clearance makes a printed female thread assemble reliably.
translate([0, 0, HOSE_LENGTH-GHT_THREAD_LENGTH])
threaded_rod(
d=GHT_MAJOR_D + THREAD_CLEARANCE,
l=GHT_THREAD_LENGTH+0.04,
pitch=GHT_PITCH,
internal=true,
blunt_start=true,
blunt_end=true,
anchor=BOTTOM
);
// Water passage below the threaded section.
cylinder(d=THROAT_D, h=HOSE_LENGTH-GHT_THREAD_LENGTH+0.02);
}
}
module npt_male_end() {
// NPT is a 1:16 taper. The threaded end points downward so the larger
// nominal end meets the hex shoulder at z=0.
translate([0, 0, -NPT_THREAD_LENGTH])
threaded_rod(
d=NPT_MAJOR_D,
l=NPT_THREAD_LENGTH,
pitch=NPT_PITCH,
thread_angle=60,
taper=NPT_TAPER,
blunt_start=true,
blunt_end=true,
anchor=BOTTOM
);
}
module adapter() {
difference() {
union() {
ght_female_end();
// Wrench flats between the hose nut and pipe thread.
translate([0, 0, -HEX_LENGTH])
cylinder(d=HEX_AF / cos(30), h=HEX_LENGTH, $fn=6);
npt_male_end();
}
// Continuous unrestricted water passage.
translate([0, 0, -NPT_THREAD_LENGTH-0.02])
cylinder(d=BORE_D, h=HOSE_LENGTH+NPT_THREAD_LENGTH+0.04);
// Small internal transitions avoid unsupported sharp re-entrant edges.
translate([0, 0, -0.01])
cylinder(d1=BORE_D, d2=THROAT_D, h=2);
}
}
adapter();