X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=distort-stl;h=f8989923b6809d763ffbeeb4fb7172dcdb1210ba;hp=1b512f853a3a2cc6047878f6783573c7c725dbe4;hb=724e5ab69049a06164482b91a5312d243314388d;hpb=59ab2fd29031c4d5930a44d7275347074a8746fb diff --git a/distort-stl b/distort-stl index 1b512f8..f898992 100755 --- a/distort-stl +++ b/distort-stl @@ -28,6 +28,7 @@ use autodie; use List::Util; use POSIX; use File::Temp (); +use Data::Dumper; sub TAU () { M_PI * 2; } @@ -102,18 +103,34 @@ sub op__project_cylinder () { #---------- main program ---------- -if (@ARGV && $ARGV[0] =~ m/^-/) { - die "no options supported\n"; -} +our $raw; -my $itmp = new File::Temp; -my $otmp = new File::Temp; +while (@ARGV && $ARGV[0] =~ m/^-/) { + $_ = shift @ARGV; + last if m/^--$/; + if (s/^--raw$//) { + $raw = 1; + } else { + die "$_ ?"; + } +} -system "cat >$itmp"; +my $itmp; +my $otmp; my $admesh_stdout = '--write-ascii-stl /dev/fd/3 3>&1 >/dev/null'; -open I, "admesh $admesh_stdout $itmp |"; +if ($raw) { + open I, "<& STDIN"; + $otmp = *STDOUT; +} else { + $itmp = new File::Temp; + $otmp = new File::Temp; + + system "cat >$itmp"; + + open I, "admesh $admesh_stdout $itmp |"; +} my $triangle; @@ -154,9 +171,11 @@ print "solid distort-stl\n"; foreach my $t (@triangles) { print " facet normal 0 0 0\n"; print " outer loop\n"; - print " vertex"; - printf " %.18g", $_ foreach @$t; - print "\n"; + foreach my $p (@$t) { + print " vertex"; + printf " %.18g", $_ foreach @$p; + print "\n"; + } print " endloop\n"; print " endfacet\n"; } @@ -165,4 +184,6 @@ print "endsolid distort-stl\n"; flush $otmp; -system "admesh --normal-values $admesh_stdout $otmp"; +if (!$raw) { + system "admesh --normal-values $admesh_stdout $otmp"; +}