From a2131ce23d2b3c097151d231d3da22cd7c5f4b5f Mon Sep 17 00:00:00 2001 From: Joel Lehtonen Date: Sun, 29 Sep 2024 12:43:04 +0300 Subject: [PATCH] Propagate information about partition() part to children() This patch allows to customize the partitioned parts. The part is available in $idx variable and is either 0 or 1. --- partitions.scad | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/partitions.scad b/partitions.scad index 56f0075..f06f037 100644 --- a/partitions.scad +++ b/partitions.scad @@ -550,6 +550,8 @@ module partition_cut_mask(l=100, h=100, cutsize=10, cutpath="jigsaw", gap=0, anc // partition(spread=12, gap=30, cutpath="dovetail") cylinder(h=50, d=80, center=false); // partition(spread=20, gap=20, cutsize=15, cutpath="dovetail") cylinder(h=50, d=80, center=false); // partition(spread=25, gap=15, cutsize=[20,20], cutpath="dovetail") cylinder(h=50, d=80, center=false); +// Side Effects: +// `$idx` is set to 0 on the back part and 1 on the front part. // Examples(2DMed): // partition(cutpath="sawtooth") cylinder(h=50, d=80, center=false); // partition(cutpath="sinewave") cylinder(h=50, d=80, center=false); @@ -566,12 +568,14 @@ module partition(size=100, spread=10, cutsize=10, cutpath="jigsaw", gap=0, spin= rsize = v_abs(rot(spin,p=size)); vec = rot(spin,p=BACK)*spread/2; move(vec) { + $idx = 0; intersection() { children(); partition_mask(l=rsize.x, w=rsize.y, h=rsize.z, cutsize=cutsize, cutpath=cutpath, gap=gap, spin=spin); } } move(-vec) { + $idx = 1; intersection() { children(); partition_mask(l=rsize.x, w=rsize.y, h=rsize.z, cutsize=cutsize, cutpath=cutpath, gap=gap, inverse=true, spin=spin);