From 0561cf7899e728d4b80dbcab108ce880fcafbf8c Mon Sep 17 00:00:00 2001 From: Thomas Kremer <-> Date: Thu, 24 Sep 2020 21:58:49 +0200 Subject: initial commit --- dxf_simplify.pl | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 dxf_simplify.pl (limited to 'dxf_simplify.pl') diff --git a/dxf_simplify.pl b/dxf_simplify.pl new file mode 100755 index 0000000..4502517 --- /dev/null +++ b/dxf_simplify.pl @@ -0,0 +1,43 @@ +#!/usr/bin/perl + +# simplifies a DXF by converting everything using a given set of DXF primitives. + +## Copyright (c) 2018-2020 by Thomas Kremer +## License: GPL ver. 2 or 3 + +# usage: +# dxf_simplify.pl infile.dxf POINT,LINE > outfile.dxf +# dxf_simplify.pl infile.dxf > outfile.dxf +# dxf_simplify.pl < infile.dxf > outfile.dxf + +use strict; +use warnings; + +use DXF; + +my ($dxffile,$set) = @ARGV; +my $f; + +if (defined $dxffile) { + open($f,"<",$dxffile) or die "cannot open dxf \"$dxffile\": $!"; +} else { + $f = \*STDIN; +} + +$set //= "POINT,LWPOLYLINE"; +$set = [split /,/, $set]; + +my $dxf = DXF::parse_dxf($f); + +DXF::canonicalize($dxf); +#DXF::boil_down($dxf,["POINT","LWPOLYLINE","CIRCLE"]); +#DXF::filter($dxf,{_=>"+", INSERT => 1, LWPOLYLINE => 1, POINT => 1, CIRCLE => 1}); +#DXF::flatten_dxf($dxf); +#my $copy = DXF::deep_copy($dxf); +DXF::boil_down($dxf,$set); +DXF::flatten($dxf); +DXF::strip($dxf); + +print DXF::lol2dxf($dxf); +#print DXF::lol2xml($dxf)->toString; + -- cgit v1.2.3