1
0
mirror of https://github.com/nophead/NopSCADlib.git synced 2025-08-30 10:39:58 +02:00

Updated images and readme.

Pipes are now made with tube instead of differencing cylinders.
HTpipeFitting() now uses rotate_extrude and corrected internal shape.
The seal ring is now tube diameter + 13.
This commit is contained in:
Chris Palmer
2024-10-06 22:59:03 +01:00
parent 78e3360900
commit 932c68a2c0
4 changed files with 166 additions and 58 deletions

View File

@@ -22,68 +22,84 @@
//
include <../utils/core/core.scad>
use <../utils/tube.scad>
function pipe_od(type) = type[2]; //! Outside diameter
function pipe_wall(type) = type[3]; //! Wall thickness
function pipe_length(type) = type[4]; //! Pipe length
function pipe_wall(type) = type[3]; //! Wall thickness
function pipe_length(type) = type[4]; //! Pipe length
function pipe_td(type) = type[5]; //! T-Pipe diameter
module ht_cap(type) { //! Draw specified cap
vitamin(str("ht_cap(", type[0], "): PVC Waterpipe - ", type[1]));
tube_id = pipe_od(type) - pipe_wall(type) * 2;
difference() {
union() {
cylinder(pipe_wall(type), tube_id/2 + pipe_wall(type) + 2.6, tube_id/2 + pipe_wall(type) + 2.6);
translate([0, 0, -pipe_length(type) - 5])
cylinder(pipe_length(type) + 5, tube_id/2 + pipe_wall(type), tube_id/2 + pipe_wall(type));
}
translate([0, 0, -pipe_length(type) - 5.01])
cylinder(pipe_length(type) + 5.01, tube_id/2, tube_id/2);
}
cylinder(pipe_wall(type), r = tube_id/2 + pipe_wall(type) + 2.6);
translate_z(-pipe_length(type) - 5)
tube(or = tube_id/2 + pipe_wall(type), ir = tube_id/2, h = pipe_length(type) + 5, center = false);
}
module ht_pipe(type) { //! Draw specified pipe
vitamin(str("ht_pipe(", type[0], "): PVC Waterpipe - ", type[1]));
tube_id = pipe_od(type) - pipe_wall(type) * 2;
difference() {
union() {
translate([0, 0, pipe_length(type)])
HTpipeFitting(pipe_od(type));
cylinder(pipe_length(type), tube_id/2 + pipe_wall(type), tube_id/2 + pipe_wall(type));
}
cylinder(pipe_length(type)*2, tube_id/2, tube_id/2);
}
tube(h = pipe_length(type), or = tube_id/2 + pipe_wall(type), ir = tube_id/2, tube_id/2);
translate_z(pipe_length(type))
HTpipeFitting(pipe_od(type), tube_id);
}
module ht_tpipe(type) { //! Draw specified T-pipe
vitamin(str("ht_tpipe(", type[0], "): PVC Waterpipe - ", type[1]));
tube_id = pipe_od(type) - pipe_wall(type) * 2;
tube_t_id = pipe_td(type) - pipe_wall(type) * 2;
difference() {
union() {
translate([0, 0, pipe_length(type)])
HTpipeFitting(pipe_od(type));
cylinder(pipe_length(type), tube_id/2 + pipe_wall(type), tube_id/2 + pipe_wall(type));
translate([0, -25, pipe_length(type) - 25])
rotate ([90, 0, 0])
HTpipeFitting(pipe_td(type));
translate_z(pipe_length(type))
HTpipeFitting(pipe_od(type), tube_id);
render(convexity = 5)
difference() {
tube(h = pipe_length(type), or = tube_id/2 + pipe_wall(type), ir = tube_id/2, center = false);
translate([0, -25, pipe_length(type) - 25]) // Cut the exit hole
rotate([90, 0, 0])
cylinder(h = 50, d = tube_t_id, center = true);
}
or = pipe_od(type) / 2;
translate([0, -or, pipe_length(type) - or])
rotate ([90, 0, 0]) {
HTpipeFitting(pipe_td(type), tube_t_id);
translate_z(-or)
render(convexity = 5)
difference() { // Notch the T tube to meet the internal bore
tube(h = or, or = pipe_td(type) / 2, ir = tube_t_id / 2, center = false);
rotate([-90, 0, 0])
cylinder(h = pipe_td(type), d = tube_id, center = true);
}
}
cylinder(pipe_length(type)*2, tube_id/2, tube_id/2);
translate([0, 0, 75])
rotate([90, 0, 0])
cylinder(pipe_length(type), tube_t_id/2, tube_t_id/2);
}
}
module HTpipeFitting(fit_dia) {
fitting_height = min(55, fit_dia * 0.8);
cylinder(10, fit_dia/2, fit_dia/2 + 2.6);
translate([0, 0, 10])
cylinder(fitting_height, fit_dia/2 + 2.6, fit_dia/2 + 2.6);
translate([0, 0, fitting_height])
cylinder(12, fit_dia/2 + 5, fit_dia/2 + 5);
translate([0, 0, fitting_height + 12])
cylinder(3.7, fit_dia/2, fit_dia/2);
translate([0, 0, -30])
cylinder(30, fit_dia/2, fit_dia/2);
module HTpipeFitting(tube_od, tube_id) {
fitting_height = min(55, tube_od * 0.8);
tube_ir = tube_id / 2;
fit_ir = tube_od / 2;
fit_or = fit_ir + (fit_ir - tube_ir);
rotate_extrude()
polygon([
[tube_ir, 0],
[fit_ir, 10],
[fit_ir, fitting_height + 12 + 3.7],
[fit_or, fitting_height + 12 + 3.7],
[fit_or, fitting_height + 12],
[fit_ir + 6.5, fitting_height + 12],
[fit_ir + 6.5, fitting_height],
[fit_or, fitting_height],
[fit_or, 10],
[fit_ir, 0]
]);
}