Merge pull request from adrianVmariano/master

bug fixes
This commit is contained in:
Revar Desmera 2022-12-11 00:47:28 -08:00 committed by GitHub
commit fbe3eb5499
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 21 additions and 20 deletions

View file

@ -728,7 +728,6 @@ function sort(list, idx=undef) =
// idxs3 = sortidx(lst, idx=[1,3]); // Returns: [3,0,2,1] // idxs3 = sortidx(lst, idx=[1,3]); // Returns: [3,0,2,1]
function sortidx(list, idx=undef) = function sortidx(list, idx=undef) =
assert(is_list(list)||is_string(list), "Invalid list." ) assert(is_list(list)||is_string(list), "Invalid list." )
!is_list(list) || len(list)<=1 ? list :
is_homogeneous(list,1) is_homogeneous(list,1)
? let( ? let(
size = list_shape(list[0]), size = list_shape(list[0]),

View file

@ -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) // d = diameter of circle. (Default: 2)
// dx = diameter of ellipse on X axis. Used instead of d. // dx = diameter of ellipse on X axis. Used instead of d.
// dy = diameter of ellipse on Y 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) // sa = starting angle. (Default: 0.0)
// ea = ending angle. Will distribute copies CCW from sa to ea. (Default: 360.0) // ea = ending angle. Will distribute copies CCW from sa to ea. (Default: 360.0)
// //

View file

@ -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("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 // 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; // $fn=32;
// projection(cut=true)xrot(-90){ // projection(cut=true)xrot(-90){
// screw("1/4-20,3/8", head="hex",orient=UP,anchor=BOTTOM,tolerance="1A"); // screw("1/4-20,3/8", head="hex",orient=UP,anchor=BOTTOM,tolerance="1A");
@ -925,11 +925,12 @@ module screw_hole(spec, head, thread, oversize, hole_oversize, head_oversize,
parse_int(substr(tolerance,1)) parse_int(substr(tolerance,1))
: assert(false,str("Unknown tolerance ",tolerance, " for clearance hole")); : 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_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 // If we got here, hole_oversize is undefined and oversize is undefined
hole_oversize = downcase(tolerance)=="tap" ? -pitch hole_oversize = downcase(tolerance)=="tap" ? -pitch
: downcase(tolerance)=="self tap" ? -pitch*lookup(pitch,[[1,0.72],[1.5,.6]]) : downcase(tolerance)=="self tap" ? -pitch*lookup(pitch,[[1,0.72],[1.5,.6]])
: lookup(_nominal_diam(screwspec), tol_table); : tol_gap;
head_oversize = first_defined([head_oversize,hole_oversize]); head_oversize = default(head_oversize, tol_gap);
default_tag("remove") default_tag("remove")
screw(spec,head=head,thread=0,shaft_undersize=-hole_oversize, head_undersize=-head_oversize, screw(spec,head=head,thread=0,shaft_undersize=-hole_oversize, head_undersize=-head_oversize,
length=length,l=l,thread_len=thread_len, _counterbore=counterbore, length=length,l=l,thread_len=thread_len, _counterbore=counterbore,
@ -1677,7 +1678,7 @@ module nut_trap_side(trap_width, spec, shape, thickness, nutwidth, anchor=BOT, o
// Example: Nut trap with child screw hole // Example: Nut trap with child screw hole
// nut_trap_inline(10, "#8") // nut_trap_inline(10, "#8")
// position(TOP)screw_hole(length=10,anchor=BOT,head="flat",$fn=32); // 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; // $fa=5;$fs=0.5;
// bardiam = 32; // bardiam = 32;
// bandwidth = 10; // bandwidth = 10;

View file

@ -1288,7 +1288,7 @@ function cylinder(h, r1, r2, center, l, r, d, d1, d2, anchor, spin=0, orient=UP)
// Example: External Roundings // Example: External Roundings
// cyl(l=50, r=30, rounding1=-5, rounding2=5, $fa=1, $fs=1); // cyl(l=50, r=30, rounding1=-5, rounding2=5, $fa=1, $fs=1);
// //
// Example: Standard Connectors // Example(Med): Standard Connectors
// xdistribute(40) { // xdistribute(40) {
// cyl(l=30, d=25) show_anchors(); // cyl(l=30, d=25) show_anchors();
// cyl(l=30, d1=25, d2=10) show_anchors(); // cyl(l=30, d1=25, d2=10) show_anchors();
@ -1755,19 +1755,16 @@ module zcyl(
// Module: tube() // Module: tube()
// //
// Description: // Description:
// Makes a hollow tube with the given outer size and wall thickness. // 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: Typical // Usage: Basic cylindrical tube, specifying inner and outer radius or diameter
// tube(h|l, or, ir, [center], [realign=]); // tube(h|l, or, ir, [center], [realign=], [anchor=], [spin=],[orient=]) [ATTACHMENTS];
// tube(h|l, or=|od=, ir=|id=, ...); // tube(h|l, od=, id=, ...) [ATTACHMENTS];
// tube(h|l, ir|id, wall, ...); // Usage: Specify wall thickness
// tube(h|l, or|od, wall, ...); // tube(h|l, or|od=|ir=|id=, wall=, ...) [ATTACHMENTS];
// tube(h|l, ir1|id1, ir2|id2, wall, ...); // Usage: Conical tubes
// tube(h|l, or1|od1, or2|od2, wall, ...); // tube(h|l, ir1=|id1=, ir2=|id2=, or1=|od1=, or2=|od2=, ...) [ATTACHMENTS];
// tube(h|l, ir1|id1, ir2|id2, or1|od1, or2|od2, [realign]); // tube(h|l, or1=|od1=, or2=|od2=, wall=, ...) [ATTACHMENTS];
// Usage: Attaching Children
// tube(...) ATTACHMENTS;
//
// Arguments: // Arguments:
// h / l = height of tube. Default: 1 // h / l = height of tube. Default: 1
// or = Outer radius of tube. Default: 1 // or = Outer radius of tube. Default: 1

View file

@ -16,6 +16,10 @@ test_sort();
module test_sortidx() { module test_sortidx() {
assert(sortidx([3]) == [0]);
assert(sortidx([]) == []);
assert(sortidx([[5,6,7]])==[0]);
assert(sortidx(["abc"]) == [0]);
lst1 = ["da","bax","eaw","cav"]; lst1 = ["da","bax","eaw","cav"];
assert(sortidx(lst1) == [1,3,0,2]); assert(sortidx(lst1) == [1,3,0,2]);
lst5 = [3,5,1,7]; lst5 = [3,5,1,7];