From eaf112a0397479bdcc20c9543f752f4467d1d3ad Mon Sep 17 00:00:00 2001 From: Adrian Mariano <avm4@cornell.edu> Date: Sat, 10 Dec 2022 09:33:22 -0500 Subject: [PATCH 1/3] improve tube() docs --- shapes3d.scad | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/shapes3d.scad b/shapes3d.scad index 4f265dd..78070fe 100644 --- a/shapes3d.scad +++ b/shapes3d.scad @@ -1288,7 +1288,7 @@ function cylinder(h, r1, r2, center, l, r, d, d1, d2, anchor, spin=0, orient=UP) // Example: External Roundings // cyl(l=50, r=30, rounding1=-5, rounding2=5, $fa=1, $fs=1); // -// Example: Standard Connectors +// Example(Med): Standard Connectors // xdistribute(40) { // cyl(l=30, d=25) show_anchors(); // cyl(l=30, d1=25, d2=10) show_anchors(); @@ -1755,19 +1755,16 @@ module zcyl( // Module: tube() // // Description: -// Makes a hollow tube with the given outer size and wall thickness. -// -// Usage: Typical -// tube(h|l, or, ir, [center], [realign=]); -// tube(h|l, or=|od=, ir=|id=, ...); -// tube(h|l, ir|id, wall, ...); -// tube(h|l, or|od, wall, ...); -// tube(h|l, ir1|id1, ir2|id2, wall, ...); -// tube(h|l, or1|od1, or2|od2, wall, ...); -// tube(h|l, ir1|id1, ir2|id2, or1|od1, or2|od2, [realign]); -// Usage: Attaching Children -// tube(...) ATTACHMENTS; -// +// Makes a hollow tube that can be cylindrical or conical by specifying inner and outer dimensions or by giving one dimension and +// wall thickness. +// Usage: Basic cylindrical tube, specifying inner and outer radius or diameter +// tube(h|l, or, ir, [center], [realign=], [anchor=], [spin=],[orient=]) [ATTACHMENTS]; +// tube(h|l, od=, id=, ...) [ATTACHMENTS]; +// Usage: Specify wall thickness +// tube(h|l, or|od=|ir=|id=, wall=, ...) [ATTACHMENTS]; +// Usage: Conical tubes +// tube(h|l, ir1=|id1=, ir2=|id2=, or1=|od1=, or2=|od2=, ...) [ATTACHMENTS]; +// tube(h|l, or1=|od1=, or2=|od2=, wall=, ...) [ATTACHMENTS]; // Arguments: // h / l = height of tube. Default: 1 // or = Outer radius of tube. Default: 1 From e1a35b213edd53c6945954f4298d854a9d49b84b Mon Sep 17 00:00:00 2001 From: Adrian Mariano <avm4@cornell.edu> Date: Sat, 10 Dec 2022 09:33:32 -0500 Subject: [PATCH 2/3] fix screw_hole() bug with "tap" tolerance. --- screws.scad | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/screws.scad b/screws.scad index 417654d..adb4d2c 100644 --- a/screws.scad +++ b/screws.scad @@ -416,7 +416,7 @@ Torx values: https://www.stanleyengineeredfastening.com/-/media/web/sef/resourc // label("2") screw("1/4-20,5/8", head="hex",orient=DOWN,atype="head", anchor=TOP,tolerance="2A"); // Standard // label("3") screw("1/4-20,5/8", head="hex",orient=DOWN,atype="head", anchor=TOP,tolerance="3A"); // Tight // } -// Example(2D): This example shows the gap between nut and bolt at the loosest tolerance for UTS. This gap is what enables the parts to mesh without binding and is part of the definition for standard metal hardware. Note that this gap is part of the standard definition for the metal hardware, not the 3D printing adjustment provided by the $slop parameter. +// Example(2D,NoAxes): This example shows the gap between nut and bolt at the loosest tolerance for UTS. This gap is what enables the parts to mesh without binding and is part of the definition for standard metal hardware. Note that this gap is part of the standard definition for the metal hardware, not the 3D printing adjustment provided by the $slop parameter. // $fn=32; // projection(cut=true)xrot(-90){ // screw("1/4-20,3/8", head="hex",orient=UP,anchor=BOTTOM,tolerance="1A"); @@ -1677,7 +1677,7 @@ module nut_trap_side(trap_width, spec, shape, thickness, nutwidth, anchor=BOT, o // Example: Nut trap with child screw hole // nut_trap_inline(10, "#8") // position(TOP)screw_hole(length=10,anchor=BOT,head="flat",$fn=32); -// Example(Med): a pipe clamp +// Example(Med,NoAxes): a pipe clamp // $fa=5;$fs=0.5; // bardiam = 32; // bandwidth = 10; From a15e3e1d43fd6acca437e0396f8db4e3d72fb10c Mon Sep 17 00:00:00 2001 From: Adrian Mariano <avm4@cornell.edu> Date: Sat, 10 Dec 2022 09:49:04 -0500 Subject: [PATCH 3/3] screws fix, arc_copies doc fix, sortidx bugfix --- comparisons.scad | 1 - distributors.scad | 2 +- screws.scad | 5 +++-- tests/test_comparisons.scad | 4 ++++ 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/comparisons.scad b/comparisons.scad index 15ea570..6dc8379 100644 --- a/comparisons.scad +++ b/comparisons.scad @@ -728,7 +728,6 @@ function sort(list, idx=undef) = // idxs3 = sortidx(lst, idx=[1,3]); // Returns: [3,0,2,1] function sortidx(list, idx=undef) = assert(is_list(list)||is_string(list), "Invalid list." ) - !is_list(list) || len(list)<=1 ? list : is_homogeneous(list,1) ? let( size = list_shape(list[0]), diff --git a/distributors.scad b/distributors.scad index 36adb19..cdbe179 100644 --- a/distributors.scad +++ b/distributors.scad @@ -775,7 +775,7 @@ module zrot_copies(rots=[], cp=[0,0,0], n, sa=0, r, d, subrot=true) // d = diameter of circle. (Default: 2) // dx = diameter of ellipse on X axis. Used instead of d. // dy = diameter of ellipse on Y axis. Used instead of d. -// rot = whether to rotate the copied children. (Default: false) +// rot = whether to rotate the copied children. (Default: true) // sa = starting angle. (Default: 0.0) // ea = ending angle. Will distribute copies CCW from sa to ea. (Default: 360.0) // diff --git a/screws.scad b/screws.scad index adb4d2c..97ebfab 100644 --- a/screws.scad +++ b/screws.scad @@ -925,11 +925,12 @@ module screw_hole(spec, head, thread, oversize, hole_oversize, head_oversize, parse_int(substr(tolerance,1)) : assert(false,str("Unknown tolerance ",tolerance, " for clearance hole")); tol_table = struct_val(screwspec,"system")=="UTS" ? UTS_clearance[tol_ind] : ISO_clearance[tol_ind]; + tol_gap = lookup(_nominal_diam(screwspec), tol_table); // If we got here, hole_oversize is undefined and oversize is undefined hole_oversize = downcase(tolerance)=="tap" ? -pitch : downcase(tolerance)=="self tap" ? -pitch*lookup(pitch,[[1,0.72],[1.5,.6]]) - : lookup(_nominal_diam(screwspec), tol_table); - head_oversize = first_defined([head_oversize,hole_oversize]); + : tol_gap; + head_oversize = default(head_oversize, tol_gap); default_tag("remove") screw(spec,head=head,thread=0,shaft_undersize=-hole_oversize, head_undersize=-head_oversize, length=length,l=l,thread_len=thread_len, _counterbore=counterbore, diff --git a/tests/test_comparisons.scad b/tests/test_comparisons.scad index 56b2f96..31ec78f 100644 --- a/tests/test_comparisons.scad +++ b/tests/test_comparisons.scad @@ -16,6 +16,10 @@ test_sort(); module test_sortidx() { + assert(sortidx([3]) == [0]); + assert(sortidx([]) == []); + assert(sortidx([[5,6,7]])==[0]); + assert(sortidx(["abc"]) == [0]); lst1 = ["da","bax","eaw","cav"]; assert(sortidx(lst1) == [1,3,0,2]); lst5 = [3,5,1,7];