From 6a10fa96ee91f84442724fb482af3f88cfb89c97 Mon Sep 17 00:00:00 2001 From: Timothy Farrell Date: Mon, 30 Dec 2019 11:23:33 -0600 Subject: [PATCH] Make taper work for taller bushings --- bushing.jscad | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/bushing.jscad b/bushing.jscad index 1bfc2ef..0ed7106 100644 --- a/bushing.jscad +++ b/bushing.jscad @@ -1,7 +1,7 @@ /// title : Basic Sleeved Rubber Bushing // author : Tim Farrell // license : MIT License -// revision : 2 +// revision : 3 // tags : Rubber // file : bushing.jscad @@ -11,26 +11,36 @@ function getParameterDefinitions () { {name: 'host_hole_diameter', type: 'float', initial: 13, min: 1, max: 40, step: 1, caption: 'Host hole diameter'}, {name: 'host_hole_height', type: 'float', initial: 0.8, caption: 'Host hole height'}, {name: 'bushing_height', type: 'float', initial: 4, min: 1, max: 40, step: 1, caption: 'Bushing height'}, - {name: 'bushing_diameter', type: 'float', initial: 10, min: 1, max: 40, step: 1, caption: 'Bushing diameter'} + {name: 'bushing_diameter', type: 'float', initial: 10, min: 1, max: 40, step: 1, caption: 'Bushing diameter'}, + {name: 'taper', type: 'checkbox', checked: true, caption: 'Taper Edges?'} ]; } function donut(p) { - const outer_radius = p.overhang + p.host_hole_diameter/2 - p.bushing_height/2; - const inner_radius = p.bushing_height/2; - return torus({ ri: inner_radius, ro: outer_radius }); + const inner_radius = (p.bushing_height - p.host_hole_height) / 2; + const outer_radius = p.overhang + p.host_hole_diameter/2 - inner_radius; + const z_offset = p.bushing_height/2 - (p.bushing_height/2 - p.host_hole_height/2); + return union( + torus({ ri: inner_radius, ro: outer_radius }).translate([0, 0, z_offset]), + torus({ ri: inner_radius, ro: outer_radius }).translate([0, 0, -z_offset]) + ); } function bushing_main(p) { - return union( - cylinder({ - r: p.overhang + p.host_hole_diameter/2 - p.bushing_height/2, - h: p.bushing_height, - center: true - }), - donut(p) - ); + const outer_radius = p.overhang + p.host_hole_diameter/2; + const main_cylinder = cylinder({ + r: outer_radius - (p.taper ? (p.bushing_height - p.host_hole_height) / 2 : 0), + h: p.bushing_height, + center: true + }); + if (p.taper) { + return union( + main_cylinder, + donut(p) + ); + } + return main_cylinder; } function host_hole(p) { @@ -52,5 +62,5 @@ function main(p) { bushing_main(p), host_hole(p), bushing_sleeve(p) - ) + ); }