From bac9a12a45629451b728f57a0a50114e023985a0 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 5 Feb 2016 22:03:59 +0000 Subject: [PATCH] commitid: Best in 3D too --- commitid.scad.pl | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/commitid.scad.pl b/commitid.scad.pl index d8a565d..3b20d62 100755 --- a/commitid.scad.pl +++ b/commitid.scad.pl @@ -133,6 +133,15 @@ sub gentextmodule_demo_start_batch () { $gtm_demo_i++; } +sub gen3dmodule ($@) { + my ($modb,@argl) = (@_); + p "module ${modb}(".(join ', ', @argl)."){\n"; + p " d=Commitid_depth();\n"; + p " translate([0,0,-d]) linear_extrude(height=d*2)\n"; + p " ${modb}_2D(".(join ',', map { m/=/ ? $` : $_ } @argl).");\n"; + p "}\n"; +} + sub gentextmodule ($@) { my ($form, @lines) = @_; my $modb = "Commitid_$form"; @@ -154,10 +163,7 @@ sub gentextmodule ($@) { } p " }\n"; p "}\n"; - p "module ${modb}(){\n"; - p " d=Commitid_depth();\n"; - p " translate([0,0,-d]) linear_extrude(height=d*2) ${modb}_2D();\n"; - p "}\n"; + gen3dmodule($modb); p sprintf "function %s_sz() = Commitid__scale() * 0.1 * [ %d, %d ];\n", $modb, 2 * ($cols * 4 - 1), 2 * (@lines * 6 - 1); @@ -390,8 +396,11 @@ sub do_git () { sub do_some_best ($$) { my ($modname, $formre) = @_; my $fullmodname = "Commitid_${modname}_2D"; - p "module $fullmodname(max_sz) {\n"; - p ' sc_max = $Commitid_max_best_scale ? $Commitid_max_best_scale : 2;'."\n"; + my @argl = qw(max_sz margin=Commitid_pixelsz()); + p "module $fullmodname(".(join ', ', @argl).") {\n"; + my $mbs = '$Commitid_max_best_scale'; + p " sc_max = $mbs ? $mbs : 2;\n"; + p " sz = max_sz - 2*[margin,margin];\n"; my @do; foreach my $f ( sort { @@ -410,13 +419,13 @@ sub do_some_best ($$) { my $id = "${form}_r${rot}"; p " sc_$id = min(sc_max"; foreach my $xy (qw(0 1)) { - p ",max_sz[$xy]/sz_$form","[",(($xy xor $rot)+0),"]"; + p ",sz[$xy]/sz_$form","[",(($xy xor $rot)+0),"]"; } p ");\n"; push @do, " if (sc_$id >= 1.0"; push @do, " && sc_$id >= sc_${form}_r1" if !$rot; push @do, ") {\n"; - push @do, " scale(sc_$id)\n"; + push @do, " translate([margin,margin]) scale(sc_$id)\n"; push @do, " rotate(90) translate([0,-sz_$form"."[1]])\n" if $rot; push @do, " Commitid_${form}_2D();\n"; push @do, " } else"; @@ -429,6 +438,8 @@ sub do_some_best ($$) { END p $_ foreach @do; p "}\n"; + + gen3dmodule "Commitid_$modname", @argl; } sub do_git_best () { -- 2.30.2