mirror of
https://github.com/BelfrySCAD/BOSL2.git
synced 2025-01-01 09:49:45 +00:00
Fixed weird default excess= in masks2d.scad.
This commit is contained in:
parent
4082c5aa2d
commit
31b93e0e37
2 changed files with 29 additions and 25 deletions
14
joiners.scad
14
joiners.scad
|
@ -20,6 +20,7 @@ include <rounding.scad>
|
||||||
// half_joiner_clear(l, w, [ang=], [clearance=], [overlap=]) [ATTACHMENTS];
|
// half_joiner_clear(l, w, [ang=], [clearance=], [overlap=]) [ATTACHMENTS];
|
||||||
// Usage: As Function
|
// Usage: As Function
|
||||||
// vnf = half_joiner_clear(l, w, [ang=], [clearance=], [overlap=]);
|
// vnf = half_joiner_clear(l, w, [ang=], [clearance=], [overlap=]);
|
||||||
|
// Topics: Joiners, Parts
|
||||||
// Description:
|
// Description:
|
||||||
// Creates a mask to clear an area so that a half_joiner can be placed there.
|
// Creates a mask to clear an area so that a half_joiner can be placed there.
|
||||||
// Arguments:
|
// Arguments:
|
||||||
|
@ -32,6 +33,7 @@ include <rounding.scad>
|
||||||
// anchor = Translate so anchor point is at origin (0,0,0). See [anchor](attachments.scad#subsection-anchor). Default: `CENTER`
|
// anchor = Translate so anchor point is at origin (0,0,0). See [anchor](attachments.scad#subsection-anchor). Default: `CENTER`
|
||||||
// spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#subsection-spin). Default: `0`
|
// spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#subsection-spin). Default: `0`
|
||||||
// orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#subsection-orient). Default: `UP`
|
// orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#subsection-orient). Default: `UP`
|
||||||
|
// See Also: half_joiner_clear(), half_joiner(), half_joiner2(), joiner_clear(), joiner()
|
||||||
// Example:
|
// Example:
|
||||||
// half_joiner_clear();
|
// half_joiner_clear();
|
||||||
function half_joiner_clear(l=20, w=10, ang=30, clearance=0, overlap=0.01, anchor=CENTER, spin=0, orient=UP) =
|
function half_joiner_clear(l=20, w=10, ang=30, clearance=0, overlap=0.01, anchor=CENTER, spin=0, orient=UP) =
|
||||||
|
@ -62,6 +64,7 @@ module half_joiner_clear(l=20, w=10, ang=30, clearance=0, overlap=0.01, anchor=C
|
||||||
// half_joiner(l, w, [base=], [ang=], [screwsize=], [$slop=]) [ATTACHMENTS];
|
// half_joiner(l, w, [base=], [ang=], [screwsize=], [$slop=]) [ATTACHMENTS];
|
||||||
// Usage: As Function
|
// Usage: As Function
|
||||||
// vnf = half_joiner(l, w, [base=], [ang=], [screwsize=], [$slop=]);
|
// vnf = half_joiner(l, w, [base=], [ang=], [screwsize=], [$slop=]);
|
||||||
|
// Topics: Joiners, Parts
|
||||||
// Description:
|
// Description:
|
||||||
// Creates a half_joiner object that can be attached to a matching half_joiner2 object.
|
// Creates a half_joiner object that can be attached to a matching half_joiner2 object.
|
||||||
// Arguments:
|
// Arguments:
|
||||||
|
@ -75,12 +78,13 @@ module half_joiner_clear(l=20, w=10, ang=30, clearance=0, overlap=0.01, anchor=C
|
||||||
// spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#subsection-spin). Default: `0`
|
// spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#subsection-spin). Default: `0`
|
||||||
// orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#subsection-orient). Default: `UP`
|
// orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#subsection-orient). Default: `UP`
|
||||||
// $slop = Printer specific slop value to make parts fit more closely.
|
// $slop = Printer specific slop value to make parts fit more closely.
|
||||||
|
// See Also: half_joiner_clear(), half_joiner(), half_joiner2(), joiner_clear(), joiner()
|
||||||
// Examples(FlatSpin,VPD=75):
|
// Examples(FlatSpin,VPD=75):
|
||||||
// half_joiner(screwsize=3);
|
// half_joiner(screwsize=3);
|
||||||
// half_joiner(l=20,w=10,base=10);
|
// half_joiner(l=20,w=10,base=10);
|
||||||
// Example(3D):
|
// Example(3D):
|
||||||
// diff()
|
// diff()
|
||||||
// cuboid(50)
|
// cuboid(30)
|
||||||
// attach([FWD,TOP,RIGHT])
|
// attach([FWD,TOP,RIGHT])
|
||||||
// xcopies(30) half_joiner();
|
// xcopies(30) half_joiner();
|
||||||
function half_joiner(l=20, w=10, base=10, ang=30, screwsize, anchor=CENTER, spin=0, orient=UP) =
|
function half_joiner(l=20, w=10, base=10, ang=30, screwsize, anchor=CENTER, spin=0, orient=UP) =
|
||||||
|
@ -241,6 +245,7 @@ module half_joiner(l=20, w=10, base=10, ang=30, screwsize, anchor=CENTER, spin=0
|
||||||
// half_joiner2(l, w, [base=], [ang=], [screwsize=])
|
// half_joiner2(l, w, [base=], [ang=], [screwsize=])
|
||||||
// Usage: As Function
|
// Usage: As Function
|
||||||
// vnf = half_joiner2(l, w, [base=], [ang=], [screwsize=])
|
// vnf = half_joiner2(l, w, [base=], [ang=], [screwsize=])
|
||||||
|
// Topics: Joiners, Parts
|
||||||
// Description:
|
// Description:
|
||||||
// Creates a half_joiner2 object that can be attached to half_joiner object.
|
// Creates a half_joiner2 object that can be attached to half_joiner object.
|
||||||
// Arguments:
|
// Arguments:
|
||||||
|
@ -253,12 +258,13 @@ module half_joiner(l=20, w=10, base=10, ang=30, screwsize, anchor=CENTER, spin=0
|
||||||
// anchor = Translate so anchor point is at origin (0,0,0). See [anchor](attachments.scad#subsection-anchor). Default: `CENTER`
|
// anchor = Translate so anchor point is at origin (0,0,0). See [anchor](attachments.scad#subsection-anchor). Default: `CENTER`
|
||||||
// spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#subsection-spin). Default: `0`
|
// spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#subsection-spin). Default: `0`
|
||||||
// orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#subsection-orient). Default: `UP`
|
// orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#subsection-orient). Default: `UP`
|
||||||
|
// See Also: half_joiner_clear(), half_joiner(), half_joiner2(), joiner_clear(), joiner()
|
||||||
// Examples(FlatSpin,VPD=75):
|
// Examples(FlatSpin,VPD=75):
|
||||||
// half_joiner2(screwsize=3);
|
// half_joiner2(screwsize=3);
|
||||||
// half_joiner2(w=10,base=10,l=20);
|
// half_joiner2(w=10,base=10,l=20);
|
||||||
// Example(3D):
|
// Example(3D):
|
||||||
// diff()
|
// diff()
|
||||||
// cuboid(50)
|
// cuboid(30)
|
||||||
// attach([FWD,TOP,RIGHT])
|
// attach([FWD,TOP,RIGHT])
|
||||||
// xcopies(30) half_joiner2();
|
// xcopies(30) half_joiner2();
|
||||||
function half_joiner2(l=20, w=10, base=10, ang=30, screwsize, anchor=CENTER, spin=0, orient=UP) =
|
function half_joiner2(l=20, w=10, base=10, ang=30, screwsize, anchor=CENTER, spin=0, orient=UP) =
|
||||||
|
@ -442,6 +448,7 @@ module half_joiner2(l=20, w=10, base=10, ang=30, screwsize, anchor=CENTER, spin=
|
||||||
// Creates a mask to clear an area so that a joiner can be placed there.
|
// Creates a mask to clear an area so that a joiner can be placed there.
|
||||||
// Usage:
|
// Usage:
|
||||||
// joiner_clear(l, w, [ang=], [clearance=], [overlap=]) [ATTACHMENTS];
|
// joiner_clear(l, w, [ang=], [clearance=], [overlap=]) [ATTACHMENTS];
|
||||||
|
// Topics: Joiners, Parts
|
||||||
// Arguments:
|
// Arguments:
|
||||||
// l = Length of the joiner to clear space for.
|
// l = Length of the joiner to clear space for.
|
||||||
// w = Width of the joiner to clear space for.
|
// w = Width of the joiner to clear space for.
|
||||||
|
@ -452,6 +459,7 @@ module half_joiner2(l=20, w=10, base=10, ang=30, screwsize, anchor=CENTER, spin=
|
||||||
// anchor = Translate so anchor point is at origin (0,0,0). See [anchor](attachments.scad#subsection-anchor). Default: `CENTER`
|
// anchor = Translate so anchor point is at origin (0,0,0). See [anchor](attachments.scad#subsection-anchor). Default: `CENTER`
|
||||||
// spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#subsection-spin). Default: `0`
|
// spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#subsection-spin). Default: `0`
|
||||||
// orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#subsection-orient). Default: `UP`
|
// orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#subsection-orient). Default: `UP`
|
||||||
|
// See Also: half_joiner_clear(), half_joiner(), half_joiner2(), joiner_clear(), joiner()
|
||||||
// Example:
|
// Example:
|
||||||
// joiner_clear();
|
// joiner_clear();
|
||||||
function joiner_clear(l=40, w=10, ang=30, clearance=0, overlap=0.01, anchor=CENTER, spin=0, orient=UP) = no_function("joiner_clear");
|
function joiner_clear(l=40, w=10, ang=30, clearance=0, overlap=0.01, anchor=CENTER, spin=0, orient=UP) = no_function("joiner_clear");
|
||||||
|
@ -476,6 +484,7 @@ module joiner_clear(l=40, w=10, ang=30, clearance=0, overlap=0.01, anchor=CENTER
|
||||||
// Module: joiner()
|
// Module: joiner()
|
||||||
// Usage:
|
// Usage:
|
||||||
// joiner(l, w, base, [ang=], [screwsize=], [$slop=]) [ATTACHMENTS];
|
// joiner(l, w, base, [ang=], [screwsize=], [$slop=]) [ATTACHMENTS];
|
||||||
|
// Topics: Joiners, Parts
|
||||||
// Description:
|
// Description:
|
||||||
// Creates a joiner object that can be attached to another joiner object.
|
// Creates a joiner object that can be attached to another joiner object.
|
||||||
// Arguments:
|
// Arguments:
|
||||||
|
@ -489,6 +498,7 @@ module joiner_clear(l=40, w=10, ang=30, clearance=0, overlap=0.01, anchor=CENTER
|
||||||
// spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#subsection-spin). Default: `0`
|
// spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#subsection-spin). Default: `0`
|
||||||
// orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#subsection-orient). Default: `UP`
|
// orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#subsection-orient). Default: `UP`
|
||||||
// $slop = Printer specific slop value to make parts fit more closely.
|
// $slop = Printer specific slop value to make parts fit more closely.
|
||||||
|
// See Also: half_joiner_clear(), half_joiner(), half_joiner2(), joiner_clear(), joiner()
|
||||||
// Examples(FlatSpin,VPD=125):
|
// Examples(FlatSpin,VPD=125):
|
||||||
// joiner(screwsize=3);
|
// joiner(screwsize=3);
|
||||||
// joiner(l=40, w=10, base=10);
|
// joiner(l=40, w=10, base=10);
|
||||||
|
|
40
masks2d.scad
40
masks2d.scad
|
@ -51,12 +51,11 @@ module mask2d_roundover(r, inset=0, excess=0.01, d, anchor=CENTER,spin=0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function mask2d_roundover(r, inset=0, excess=0.01, d, anchor=CENTER,spin=0) =
|
function mask2d_roundover(r, inset=0, excess=0.01, d, anchor=CENTER,spin=0) =
|
||||||
assert(is_num(r)||is_num(d))
|
assert(is_finite(r)||is_finite(d))
|
||||||
assert(is_undef(excess)||is_num(excess))
|
assert(is_finite(excess))
|
||||||
assert(is_num(inset)||(is_vector(inset)&&len(inset)==2))
|
assert(is_finite(inset)||(is_vector(inset)&&len(inset)==2))
|
||||||
let(
|
let(
|
||||||
inset = is_list(inset)? inset : [inset,inset],
|
inset = is_list(inset)? inset : [inset,inset],
|
||||||
excess = default(excess,$overlap),
|
|
||||||
r = get_radius(r=r,d=d,dflt=1),
|
r = get_radius(r=r,d=d,dflt=1),
|
||||||
steps = quantup(segs(r),4)/4,
|
steps = quantup(segs(r),4)/4,
|
||||||
step = 90/steps,
|
step = 90/steps,
|
||||||
|
@ -106,12 +105,11 @@ module mask2d_cove(r, inset=0, excess=0.01, d, anchor=CENTER,spin=0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function mask2d_cove(r, inset=0, excess=0.01, d, anchor=CENTER,spin=0) =
|
function mask2d_cove(r, inset=0, excess=0.01, d, anchor=CENTER,spin=0) =
|
||||||
assert(is_num(r)||is_num(d))
|
assert(is_finite(r)||is_finite(d))
|
||||||
assert(is_undef(excess)||is_num(excess))
|
assert(is_finite(excess))
|
||||||
assert(is_num(inset)||(is_vector(inset)&&len(inset)==2))
|
assert(is_finite(inset)||(is_vector(inset)&&len(inset)==2))
|
||||||
let(
|
let(
|
||||||
inset = is_list(inset)? inset : [inset,inset],
|
inset = is_list(inset)? inset : [inset,inset],
|
||||||
excess = default(excess,$overlap),
|
|
||||||
r = get_radius(r=r,d=d,dflt=1),
|
r = get_radius(r=r,d=d,dflt=1),
|
||||||
steps = quantup(segs(r),4)/4,
|
steps = quantup(segs(r),4)/4,
|
||||||
step = 90/steps,
|
step = 90/steps,
|
||||||
|
@ -174,12 +172,11 @@ module mask2d_chamfer(edge, angle=45, inset=0, excess=0.01, x, y, anchor=CENTER,
|
||||||
|
|
||||||
function mask2d_chamfer(edge, angle=45, inset=0, excess=0.01, x, y, anchor=CENTER,spin=0) =
|
function mask2d_chamfer(edge, angle=45, inset=0, excess=0.01, x, y, anchor=CENTER,spin=0) =
|
||||||
let(dummy=one_defined([x,y,edge],["x","y","edge"]))
|
let(dummy=one_defined([x,y,edge],["x","y","edge"]))
|
||||||
assert(is_num(angle))
|
assert(is_finite(angle))
|
||||||
assert(is_undef(excess)||is_num(excess))
|
assert(is_finite(excess))
|
||||||
assert(is_num(inset)||(is_vector(inset)&&len(inset)==2))
|
assert(is_finite(inset)||(is_vector(inset)&&len(inset)==2))
|
||||||
let(
|
let(
|
||||||
inset = is_list(inset)? inset : [inset,inset],
|
inset = is_list(inset)? inset : [inset,inset],
|
||||||
excess = default(excess,$overlap),
|
|
||||||
x = is_def(x)? x :
|
x = is_def(x)? x :
|
||||||
is_def(y)? adj_ang_to_opp(adj=y,ang=angle) :
|
is_def(y)? adj_ang_to_opp(adj=y,ang=angle) :
|
||||||
hyp_ang_to_opp(hyp=edge,ang=angle),
|
hyp_ang_to_opp(hyp=edge,ang=angle),
|
||||||
|
@ -229,10 +226,9 @@ module mask2d_rabbet(size, excess=0.01, anchor=CENTER,spin=0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function mask2d_rabbet(size, excess=0.01, anchor=CENTER,spin=0) =
|
function mask2d_rabbet(size, excess=0.01, anchor=CENTER,spin=0) =
|
||||||
assert(is_num(size)||(is_vector(size)&&len(size)==2))
|
assert(is_finite(size)||(is_vector(size)&&len(size)==2))
|
||||||
assert(is_undef(excess)||is_num(excess))
|
assert(is_finite(excess))
|
||||||
let(
|
let(
|
||||||
excess = default(excess,$overlap),
|
|
||||||
size = is_list(size)? size : [size,size],
|
size = is_list(size)? size : [size,size],
|
||||||
path = [
|
path = [
|
||||||
[size.x, -excess],
|
[size.x, -excess],
|
||||||
|
@ -290,13 +286,12 @@ module mask2d_dovetail(edge, angle=30, inset=0, shelf=0, excess=0.01, x, y, anch
|
||||||
|
|
||||||
function mask2d_dovetail(edge, angle=30, inset=0, shelf=0, excess=0.01, x, y, anchor=CENTER, spin=0) =
|
function mask2d_dovetail(edge, angle=30, inset=0, shelf=0, excess=0.01, x, y, anchor=CENTER, spin=0) =
|
||||||
assert(num_defined([x,y,edge])==1)
|
assert(num_defined([x,y,edge])==1)
|
||||||
assert(is_num(first_defined([x,y,edge])))
|
assert(is_finite(first_defined([x,y,edge])))
|
||||||
assert(is_num(angle))
|
assert(is_finite(angle))
|
||||||
assert(is_undef(excess)||is_num(excess))
|
assert(is_finite(excess))
|
||||||
assert(is_num(inset)||(is_vector(inset)&&len(inset)==2))
|
assert(is_finite(inset)||(is_vector(inset)&&len(inset)==2))
|
||||||
let(
|
let(
|
||||||
inset = is_list(inset)? inset : [inset,inset],
|
inset = is_list(inset)? inset : [inset,inset],
|
||||||
excess = default(excess,$overlap),
|
|
||||||
x = !is_undef(x)? x :
|
x = !is_undef(x)? x :
|
||||||
!is_undef(y)? adj_ang_to_opp(adj=y,ang=angle) :
|
!is_undef(y)? adj_ang_to_opp(adj=y,ang=angle) :
|
||||||
hyp_ang_to_opp(hyp=edge,ang=angle),
|
hyp_ang_to_opp(hyp=edge,ang=angle),
|
||||||
|
@ -342,9 +337,9 @@ function mask2d_dovetail(edge, angle=30, inset=0, shelf=0, excess=0.01, x, y, an
|
||||||
// edge_profile(BOT)
|
// edge_profile(BOT)
|
||||||
// mask2d_teardrop(r=10, angle=40);
|
// mask2d_teardrop(r=10, angle=40);
|
||||||
function mask2d_teardrop(r, angle=45, excess=0.01, d, anchor=CENTER, spin=0) =
|
function mask2d_teardrop(r, angle=45, excess=0.01, d, anchor=CENTER, spin=0) =
|
||||||
assert(is_num(angle))
|
assert(is_finite(angle))
|
||||||
assert(angle>0 && angle<90)
|
assert(angle>0 && angle<90)
|
||||||
assert(is_num(excess))
|
assert(is_finite(excess))
|
||||||
let(
|
let(
|
||||||
r = get_radius(r=r, d=d, dflt=1),
|
r = get_radius(r=r, d=d, dflt=1),
|
||||||
n = ceil(segs(r) * angle/360),
|
n = ceil(segs(r) * angle/360),
|
||||||
|
@ -427,7 +422,6 @@ function mask2d_ogee(pattern, excess=0.01, anchor=CENTER, spin=0) =
|
||||||
assert(len(pattern)%2==0,"pattern must be a list of TYPE, VAL pairs.")
|
assert(len(pattern)%2==0,"pattern must be a list of TYPE, VAL pairs.")
|
||||||
assert(all([for (i = idx(pattern,step=2)) in_list(pattern[i],["step","xstep","ystep","round","fillet"])]))
|
assert(all([for (i = idx(pattern,step=2)) in_list(pattern[i],["step","xstep","ystep","round","fillet"])]))
|
||||||
let(
|
let(
|
||||||
excess = default(excess,$overlap),
|
|
||||||
x = concat([0], cumsum([
|
x = concat([0], cumsum([
|
||||||
for (i=idx(pattern,step=2)) let(
|
for (i=idx(pattern,step=2)) let(
|
||||||
type = pattern[i],
|
type = pattern[i],
|
||||||
|
|
Loading…
Reference in a new issue