195 ww = sw * (1 + gap/100);
196 wh = sh * (1 + gap/100);
198 wmax = max([ww, wh]);
199 wmin = min([ww, wh]);
202 wt = is_list(size) && (len(size) > 1) ? 1 : 0;
204 wr = (wt == 0) ? ww/2 : wmin/4;
205 wl = (wt == 0) ? undef : [ww-wr*2, wh-wr*2];
216 square([
eps, wth+
eps*8], center=true);
249 pbh = php * wh / 100;
250 pbw = pwp * cd / 100;
252 wsw = ww/2 * (1+5/10);
265 h_bvr = [1, 1/2, 0, 1] * wmin/4;
266 h_bvrm = [1, 1, 0, 1];
268 bp = concat( [
for (i=h_bp) i], [
for (i=
reverse(h_bp)) [-i.x, i.y]] );
269 bvr = concat( [
for (i=h_bvr) i], [
for (i=
reverse(h_bvr)) i] );
270 bvrm = concat( [
for (i=h_bvrm) i], [
for (i=
reverse(h_bvrm)) i] );
284 h_svr = [1, 1/2, 1/2, 1] * wmin/4;
285 h_svrm = [5, 1, 1, 1];
287 sp = concat( [
for (i=h_sp) i], [
for (i=
reverse(h_sp)) [-i.x, i.y]] );
288 svr = concat( [
for (i=h_svr) i], [
for (i=
reverse(h_svr)) i] );
289 svrm = concat( [
for (i=h_svrm) i], [
for (i=
reverse(h_svrm)) i] );
293 for (s = is_list(s) ? s : [s])
294 rotate([0, s * 180, 0])
295 translate([0, 0, cd/2 + wth/2])
309 translate([0, wh*(gap/100), 0])
310 scale([1+(gap/200), 1, 1+
eps*4])
326 translate([x * (wsw + ssw/2), wh/2, 0])
328 screw_bore(d=sbd, l=sbl +wh/2 +
eps*8, h=sbh, n=sbn, s=sbs, a=1);
334 translate([0, +wh/2, i * (cd/2-pbw)])
337 rhombus( [pbw, pbh*2], center=true);
341 translate([0, -wh/2, 0])
344 rhombus( [pbw, pbh*2], center=true);
363 vr = [3, 1, 1, 0] * min([w, h])/4;
368 for (s = is_list(s) ? s : [s])
369 rotate([0, s * 180, 0])
370 translate([0, 0, wth/2])
412 vr = [3, 1, 0, 0, 1, 1, 1, 0] * min([w, h])/4;
413 vrm = [3, 1, 0, 0, 1, 1, 1, 0];
417 for (s = is_list(s) ? s : [s])
418 rotate([0, s * 180, 0])
421 translate([0, 0, wth/2])
429 translate([cw/2, 0, wth/2 + h - ch/2])
430 cube([cw, ct, ch +
eps*4], center=true);
origin2d
<point-2d> The origin point coordinate in 2d Euclidean space.
eps
<decimal> Epsilon, small distance to deal with overlapping shapes.
function binary_bit_is(v, b, t=1)
Test if a binary bit position of an integer value equals a test bit.
function defined_e_or(v, i, d)
Return an element of an iterable when it exists or a default value otherwise.
function reverse(v)
Reverse the elements of an iterable value.
function is_defined(v)
Test if a value is defined.
function polygon_round_eve_all_p(c, vr=0, vrm=1, vfn, w=true, cw=true)
Compute coordinates that round all of the vertices between each adjacent edges in 2D.
module screw_bore(d=1, l=1, h, n, t, s, f, a)
Flat and beveled-head fastener bore with nut, nut slot, and bore tolerance.
module clamp_cg(size, clamp, cone, grip, wth=0, gap=10, mode)
A clamp, bushing, and/or grip for wire/hose wall penetrations.
module rhombus(size, vr, center=false)
A rhombus.
module cone(r=1, h, d, vr)
A cone.