From eac753be7c665e8459f008062c7238ff04c1f57c Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 16 Feb 2020 21:04:31 +0000 Subject: [PATCH] quacks-ingredients: wip counts Signed-off-by: Ian Jackson --- quacks-ingredients-counts | 42 +++- quacks-ingredients-counts.scad | 339 +++++++++++++++++++++++++++++++ quacks-ingredients-update-levels | 10 + quacks-ingredients.scad | 3 + 4 files changed, 392 insertions(+), 2 deletions(-) create mode 100644 quacks-ingredients-counts.scad diff --git a/quacks-ingredients-counts b/quacks-ingredients-counts index 0affe2e..870970a 100755 --- a/quacks-ingredients-counts +++ b/quacks-ingredients-counts @@ -1,6 +1,9 @@ #!/usr/bin/perl -w +use strict; + use Data::Dumper; +use POSIX; $_=; chomp or die; our @names = split /\t/, $_; @@ -10,12 +13,47 @@ our %count; foreach my $nspots (qw(1 2 3 4)) { $_=; chomp or die; my @l = split /\t/, $_; - foreach my $i (0..$#names) { $count{$names[$i]}{$nspots} = $l[$i] // 0; } + foreach my $i (0..$#names) { $count{$names[$i]}{$nspots} = $l[$i] || 0; } } $_ = Dumper(\%count); s{^}{// }mg; -print or die $!; + +our $name; + +sub wrtoplevel () { + print "module $name(){ ////toplevel\n"; + my $cs = $count{$name}; + my $total = 0; $total += $_ foreach values %$cs; + my $rowsz = ceil(sqrt($total)); + my $nrows = ceil($total / $rowsz); + my $ix = 0; + print "// total=$total, rowsz=$rowsz, nrows=$nrows\n"; + foreach my $ndots (sort keys %$cs) { + my $c = $cs->{$ndots}; + print <error and die $!; __DATA__ White Green Blue Red Yellow Purple Black Orange diff --git a/quacks-ingredients-counts.scad b/quacks-ingredients-counts.scad new file mode 100644 index 0000000..97503e3 --- /dev/null +++ b/quacks-ingredients-counts.scad @@ -0,0 +1,339 @@ +// autogenerated - do not edit +// update script is quacks-ingredients-updates-levels +// source is quacks-ingredients-counts +module Black(){ ////toplevel +// total=18, rowsz=5, nrows=4 + union(){ + $ndots = 1; + translate(token_pitch * [ -2.5, -2.0 ]) Token_L(); + translate(token_pitch * [ -2.2, -1.0 ]) Token_L(); + translate(token_pitch * [ -2.0, 0.0 ]) Token_L(); + translate(token_pitch * [ -1.8, 1.0 ]) Token_L(); + translate(token_pitch * [ -1.5, -2.0 ]) Token_L(); + translate(token_pitch * [ -1.2, -1.0 ]) Token_L(); + translate(token_pitch * [ -1.0, 0.0 ]) Token_L(); + translate(token_pitch * [ -0.8, 1.0 ]) Token_L(); + translate(token_pitch * [ -0.5, -2.0 ]) Token_L(); + translate(token_pitch * [ -0.2, -1.0 ]) Token_L(); + translate(token_pitch * [ 0.0, 0.0 ]) Token_L(); + translate(token_pitch * [ 0.2, 1.0 ]) Token_L(); + translate(token_pitch * [ 0.5, -2.0 ]) Token_L(); + translate(token_pitch * [ 0.8, -1.0 ]) Token_L(); + translate(token_pitch * [ 1.0, 0.0 ]) Token_L(); + translate(token_pitch * [ 1.2, 1.0 ]) Token_L(); + translate(token_pitch * [ 1.5, -2.0 ]) Token_L(); + translate(token_pitch * [ 1.8, -1.0 ]) Token_L(); + }; + union(){ + $ndots = 2; + }; + union(){ + $ndots = 3; + }; + union(){ + $ndots = 4; + }; +} +module Blue(){ ////toplevel +// total=34, rowsz=6, nrows=6 + union(){ + $ndots = 1; + translate(token_pitch * [ -3.0, -3.0 ]) Token_L(); + translate(token_pitch * [ -2.8, -2.0 ]) Token_L(); + translate(token_pitch * [ -2.7, -1.0 ]) Token_L(); + translate(token_pitch * [ -2.5, 0.0 ]) Token_L(); + translate(token_pitch * [ -2.3, 1.0 ]) Token_L(); + translate(token_pitch * [ -2.2, 2.0 ]) Token_L(); + translate(token_pitch * [ -2.0, -3.0 ]) Token_L(); + translate(token_pitch * [ -1.8, -2.0 ]) Token_L(); + translate(token_pitch * [ -1.7, -1.0 ]) Token_L(); + translate(token_pitch * [ -1.5, 0.0 ]) Token_L(); + translate(token_pitch * [ -1.3, 1.0 ]) Token_L(); + translate(token_pitch * [ -1.2, 2.0 ]) Token_L(); + translate(token_pitch * [ -1.0, -3.0 ]) Token_L(); + translate(token_pitch * [ -0.8, -2.0 ]) Token_L(); + }; + union(){ + $ndots = 2; + translate(token_pitch * [ -0.7, -1.0 ]) Token_L(); + translate(token_pitch * [ -0.5, 0.0 ]) Token_L(); + translate(token_pitch * [ -0.3, 1.0 ]) Token_L(); + translate(token_pitch * [ -0.2, 2.0 ]) Token_L(); + translate(token_pitch * [ 0.0, -3.0 ]) Token_L(); + translate(token_pitch * [ 0.2, -2.0 ]) Token_L(); + translate(token_pitch * [ 0.3, -1.0 ]) Token_L(); + translate(token_pitch * [ 0.5, 0.0 ]) Token_L(); + translate(token_pitch * [ 0.7, 1.0 ]) Token_L(); + translate(token_pitch * [ 0.8, 2.0 ]) Token_L(); + }; + union(){ + $ndots = 3; + }; + union(){ + $ndots = 4; + translate(token_pitch * [ 1.0, -3.0 ]) Token_L(); + translate(token_pitch * [ 1.2, -2.0 ]) Token_L(); + translate(token_pitch * [ 1.3, -1.0 ]) Token_L(); + translate(token_pitch * [ 1.5, 0.0 ]) Token_L(); + translate(token_pitch * [ 1.7, 1.0 ]) Token_L(); + translate(token_pitch * [ 1.8, 2.0 ]) Token_L(); + translate(token_pitch * [ 2.0, -3.0 ]) Token_L(); + translate(token_pitch * [ 2.2, -2.0 ]) Token_L(); + translate(token_pitch * [ 2.3, -1.0 ]) Token_L(); + translate(token_pitch * [ 2.5, 0.0 ]) Token_L(); + }; +} +module Green(){ ////toplevel +// total=38, rowsz=7, nrows=6 + union(){ + $ndots = 1; + translate(token_pitch * [ -3.5, -3.0 ]) Token_L(); + translate(token_pitch * [ -3.3, -2.0 ]) Token_L(); + translate(token_pitch * [ -3.2, -1.0 ]) Token_L(); + translate(token_pitch * [ -3.0, 0.0 ]) Token_L(); + translate(token_pitch * [ -2.8, 1.0 ]) Token_L(); + translate(token_pitch * [ -2.7, 2.0 ]) Token_L(); + translate(token_pitch * [ -2.5, -3.0 ]) Token_L(); + translate(token_pitch * [ -2.3, -2.0 ]) Token_L(); + translate(token_pitch * [ -2.2, -1.0 ]) Token_L(); + translate(token_pitch * [ -2.0, 0.0 ]) Token_L(); + translate(token_pitch * [ -1.8, 1.0 ]) Token_L(); + translate(token_pitch * [ -1.7, 2.0 ]) Token_L(); + translate(token_pitch * [ -1.5, -3.0 ]) Token_L(); + translate(token_pitch * [ -1.3, -2.0 ]) Token_L(); + translate(token_pitch * [ -1.2, -1.0 ]) Token_L(); + }; + union(){ + $ndots = 2; + translate(token_pitch * [ -1.0, 0.0 ]) Token_L(); + translate(token_pitch * [ -0.8, 1.0 ]) Token_L(); + translate(token_pitch * [ -0.7, 2.0 ]) Token_L(); + translate(token_pitch * [ -0.5, -3.0 ]) Token_L(); + translate(token_pitch * [ -0.3, -2.0 ]) Token_L(); + translate(token_pitch * [ -0.2, -1.0 ]) Token_L(); + translate(token_pitch * [ 0.0, 0.0 ]) Token_L(); + translate(token_pitch * [ 0.2, 1.0 ]) Token_L(); + translate(token_pitch * [ 0.3, 2.0 ]) Token_L(); + translate(token_pitch * [ 0.5, -3.0 ]) Token_L(); + }; + union(){ + $ndots = 3; + }; + union(){ + $ndots = 4; + translate(token_pitch * [ 0.7, -2.0 ]) Token_L(); + translate(token_pitch * [ 0.8, -1.0 ]) Token_L(); + translate(token_pitch * [ 1.0, 0.0 ]) Token_L(); + translate(token_pitch * [ 1.2, 1.0 ]) Token_L(); + translate(token_pitch * [ 1.3, 2.0 ]) Token_L(); + translate(token_pitch * [ 1.5, -3.0 ]) Token_L(); + translate(token_pitch * [ 1.7, -2.0 ]) Token_L(); + translate(token_pitch * [ 1.8, -1.0 ]) Token_L(); + translate(token_pitch * [ 2.0, 0.0 ]) Token_L(); + translate(token_pitch * [ 2.2, 1.0 ]) Token_L(); + translate(token_pitch * [ 2.3, 2.0 ]) Token_L(); + translate(token_pitch * [ 2.5, -3.0 ]) Token_L(); + translate(token_pitch * [ 2.7, -2.0 ]) Token_L(); + }; +} +module Orange(){ ////toplevel +// total=20, rowsz=5, nrows=4 + union(){ + $ndots = 1; + translate(token_pitch * [ -2.5, -2.0 ]) Token_L(); + translate(token_pitch * [ -2.2, -1.0 ]) Token_L(); + translate(token_pitch * [ -2.0, 0.0 ]) Token_L(); + translate(token_pitch * [ -1.8, 1.0 ]) Token_L(); + translate(token_pitch * [ -1.5, -2.0 ]) Token_L(); + translate(token_pitch * [ -1.2, -1.0 ]) Token_L(); + translate(token_pitch * [ -1.0, 0.0 ]) Token_L(); + translate(token_pitch * [ -0.8, 1.0 ]) Token_L(); + translate(token_pitch * [ -0.5, -2.0 ]) Token_L(); + translate(token_pitch * [ -0.2, -1.0 ]) Token_L(); + translate(token_pitch * [ 0.0, 0.0 ]) Token_L(); + translate(token_pitch * [ 0.2, 1.0 ]) Token_L(); + translate(token_pitch * [ 0.5, -2.0 ]) Token_L(); + translate(token_pitch * [ 0.8, -1.0 ]) Token_L(); + translate(token_pitch * [ 1.0, 0.0 ]) Token_L(); + translate(token_pitch * [ 1.2, 1.0 ]) Token_L(); + translate(token_pitch * [ 1.5, -2.0 ]) Token_L(); + translate(token_pitch * [ 1.8, -1.0 ]) Token_L(); + translate(token_pitch * [ 2.0, 0.0 ]) Token_L(); + translate(token_pitch * [ 2.2, 1.0 ]) Token_L(); + }; + union(){ + $ndots = 2; + }; + union(){ + $ndots = 3; + }; + union(){ + $ndots = 4; + }; +} +module Purple(){ ////toplevel +// total=15, rowsz=4, nrows=4 + union(){ + $ndots = 1; + translate(token_pitch * [ -2.0, -2.0 ]) Token_L(); + translate(token_pitch * [ -1.8, -1.0 ]) Token_L(); + translate(token_pitch * [ -1.5, 0.0 ]) Token_L(); + translate(token_pitch * [ -1.2, 1.0 ]) Token_L(); + translate(token_pitch * [ -1.0, -2.0 ]) Token_L(); + translate(token_pitch * [ -0.8, -1.0 ]) Token_L(); + translate(token_pitch * [ -0.5, 0.0 ]) Token_L(); + translate(token_pitch * [ -0.2, 1.0 ]) Token_L(); + translate(token_pitch * [ 0.0, -2.0 ]) Token_L(); + translate(token_pitch * [ 0.2, -1.0 ]) Token_L(); + translate(token_pitch * [ 0.5, 0.0 ]) Token_L(); + translate(token_pitch * [ 0.8, 1.0 ]) Token_L(); + translate(token_pitch * [ 1.0, -2.0 ]) Token_L(); + translate(token_pitch * [ 1.2, -1.0 ]) Token_L(); + translate(token_pitch * [ 1.5, 0.0 ]) Token_L(); + }; + union(){ + $ndots = 2; + }; + union(){ + $ndots = 3; + }; + union(){ + $ndots = 4; + }; +} +module Red(){ ////toplevel +// total=30, rowsz=6, nrows=5 + union(){ + $ndots = 1; + translate(token_pitch * [ -3.0, -2.5 ]) Token_L(); + translate(token_pitch * [ -2.8, -1.5 ]) Token_L(); + translate(token_pitch * [ -2.6, -0.5 ]) Token_L(); + translate(token_pitch * [ -2.4, 0.5 ]) Token_L(); + translate(token_pitch * [ -2.2, 1.5 ]) Token_L(); + translate(token_pitch * [ -2.0, -2.5 ]) Token_L(); + translate(token_pitch * [ -1.8, -1.5 ]) Token_L(); + translate(token_pitch * [ -1.6, -0.5 ]) Token_L(); + translate(token_pitch * [ -1.4, 0.5 ]) Token_L(); + translate(token_pitch * [ -1.2, 1.5 ]) Token_L(); + translate(token_pitch * [ -1.0, -2.5 ]) Token_L(); + translate(token_pitch * [ -0.8, -1.5 ]) Token_L(); + }; + union(){ + $ndots = 2; + translate(token_pitch * [ -0.6, -0.5 ]) Token_L(); + translate(token_pitch * [ -0.4, 0.5 ]) Token_L(); + translate(token_pitch * [ -0.2, 1.5 ]) Token_L(); + translate(token_pitch * [ 0.0, -2.5 ]) Token_L(); + translate(token_pitch * [ 0.2, -1.5 ]) Token_L(); + translate(token_pitch * [ 0.4, -0.5 ]) Token_L(); + translate(token_pitch * [ 0.6, 0.5 ]) Token_L(); + translate(token_pitch * [ 0.8, 1.5 ]) Token_L(); + }; + union(){ + $ndots = 3; + }; + union(){ + $ndots = 4; + translate(token_pitch * [ 1.0, -2.5 ]) Token_L(); + translate(token_pitch * [ 1.2, -1.5 ]) Token_L(); + translate(token_pitch * [ 1.4, -0.5 ]) Token_L(); + translate(token_pitch * [ 1.6, 0.5 ]) Token_L(); + translate(token_pitch * [ 1.8, 1.5 ]) Token_L(); + translate(token_pitch * [ 2.0, -2.5 ]) Token_L(); + translate(token_pitch * [ 2.2, -1.5 ]) Token_L(); + translate(token_pitch * [ 2.4, -0.5 ]) Token_L(); + translate(token_pitch * [ 2.6, 0.5 ]) Token_L(); + translate(token_pitch * [ 2.8, 1.5 ]) Token_L(); + }; +} +module White(){ ////toplevel +// total=32, rowsz=6, nrows=6 + union(){ + $ndots = 1; + translate(token_pitch * [ -3.0, -3.0 ]) Token_L(); + translate(token_pitch * [ -2.8, -2.0 ]) Token_L(); + translate(token_pitch * [ -2.7, -1.0 ]) Token_L(); + translate(token_pitch * [ -2.5, 0.0 ]) Token_L(); + translate(token_pitch * [ -2.3, 1.0 ]) Token_L(); + translate(token_pitch * [ -2.2, 2.0 ]) Token_L(); + translate(token_pitch * [ -2.0, -3.0 ]) Token_L(); + translate(token_pitch * [ -1.8, -2.0 ]) Token_L(); + translate(token_pitch * [ -1.7, -1.0 ]) Token_L(); + translate(token_pitch * [ -1.5, 0.0 ]) Token_L(); + translate(token_pitch * [ -1.3, 1.0 ]) Token_L(); + translate(token_pitch * [ -1.2, 2.0 ]) Token_L(); + translate(token_pitch * [ -1.0, -3.0 ]) Token_L(); + translate(token_pitch * [ -0.8, -2.0 ]) Token_L(); + translate(token_pitch * [ -0.7, -1.0 ]) Token_L(); + translate(token_pitch * [ -0.5, 0.0 ]) Token_L(); + translate(token_pitch * [ -0.3, 1.0 ]) Token_L(); + translate(token_pitch * [ -0.2, 2.0 ]) Token_L(); + translate(token_pitch * [ 0.0, -3.0 ]) Token_L(); + translate(token_pitch * [ 0.2, -2.0 ]) Token_L(); + }; + union(){ + $ndots = 2; + translate(token_pitch * [ 0.3, -1.0 ]) Token_L(); + translate(token_pitch * [ 0.5, 0.0 ]) Token_L(); + translate(token_pitch * [ 0.7, 1.0 ]) Token_L(); + translate(token_pitch * [ 0.8, 2.0 ]) Token_L(); + translate(token_pitch * [ 1.0, -3.0 ]) Token_L(); + translate(token_pitch * [ 1.2, -2.0 ]) Token_L(); + translate(token_pitch * [ 1.3, -1.0 ]) Token_L(); + translate(token_pitch * [ 1.5, 0.0 ]) Token_L(); + }; + union(){ + $ndots = 3; + translate(token_pitch * [ 1.7, 1.0 ]) Token_L(); + translate(token_pitch * [ 1.8, 2.0 ]) Token_L(); + translate(token_pitch * [ 2.0, -3.0 ]) Token_L(); + translate(token_pitch * [ 2.2, -2.0 ]) Token_L(); + }; + union(){ + $ndots = 4; + }; +} +module Yellow(){ ////toplevel +// total=29, rowsz=6, nrows=5 + union(){ + $ndots = 1; + translate(token_pitch * [ -3.0, -2.5 ]) Token_L(); + translate(token_pitch * [ -2.8, -1.5 ]) Token_L(); + translate(token_pitch * [ -2.6, -0.5 ]) Token_L(); + translate(token_pitch * [ -2.4, 0.5 ]) Token_L(); + translate(token_pitch * [ -2.2, 1.5 ]) Token_L(); + translate(token_pitch * [ -2.0, -2.5 ]) Token_L(); + translate(token_pitch * [ -1.8, -1.5 ]) Token_L(); + translate(token_pitch * [ -1.6, -0.5 ]) Token_L(); + translate(token_pitch * [ -1.4, 0.5 ]) Token_L(); + translate(token_pitch * [ -1.2, 1.5 ]) Token_L(); + translate(token_pitch * [ -1.0, -2.5 ]) Token_L(); + translate(token_pitch * [ -0.8, -1.5 ]) Token_L(); + translate(token_pitch * [ -0.6, -0.5 ]) Token_L(); + }; + union(){ + $ndots = 2; + translate(token_pitch * [ -0.4, 0.5 ]) Token_L(); + translate(token_pitch * [ -0.2, 1.5 ]) Token_L(); + translate(token_pitch * [ 0.0, -2.5 ]) Token_L(); + translate(token_pitch * [ 0.2, -1.5 ]) Token_L(); + translate(token_pitch * [ 0.4, -0.5 ]) Token_L(); + translate(token_pitch * [ 0.6, 0.5 ]) Token_L(); + }; + union(){ + $ndots = 3; + }; + union(){ + $ndots = 4; + translate(token_pitch * [ 0.8, 1.5 ]) Token_L(); + translate(token_pitch * [ 1.0, -2.5 ]) Token_L(); + translate(token_pitch * [ 1.2, -1.5 ]) Token_L(); + translate(token_pitch * [ 1.4, -0.5 ]) Token_L(); + translate(token_pitch * [ 1.6, 0.5 ]) Token_L(); + translate(token_pitch * [ 1.8, 1.5 ]) Token_L(); + translate(token_pitch * [ 2.0, -2.5 ]) Token_L(); + translate(token_pitch * [ 2.2, -1.5 ]) Token_L(); + translate(token_pitch * [ 2.4, -0.5 ]) Token_L(); + translate(token_pitch * [ 2.6, 0.5 ]) Token_L(); + }; +} diff --git a/quacks-ingredients-update-levels b/quacks-ingredients-update-levels index a4c886c..6ce8c46 100755 --- a/quacks-ingredients-update-levels +++ b/quacks-ingredients-update-levels @@ -12,3 +12,13 @@ include END mv -f $f.tmp $f done + +f=quacks-ingredients-counts.scad +cat >$f.tmp <>$f.tmp +mv -f $f.tmp $f diff --git a/quacks-ingredients.scad b/quacks-ingredients.scad index 33ba5fb..57bc7a5 100644 --- a/quacks-ingredients.scad +++ b/quacks-ingredients.scad @@ -124,4 +124,7 @@ module Tests_L() { ////toplevel Tests() Token_L(); } +//// toplevels-from: +include + //Demo(); -- 2.30.2