From 67f0c709ce3c8b9d76c3ad9c57fbc4f47bdd7d97 Mon Sep 17 00:00:00 2001 From: Jonathan Neuhauser Date: Fri, 2 Jul 2021 22:55:49 +0200 Subject: [PATCH] fix transform order in dxf_outlines --- dxf12_outlines.py | 2 +- ...12_outlines__preserved-transforms__svg.out | 224 +++ .../data/refs/dxf12_outlines__shapes__svg.out | 1448 +++++++++++++++++ tests/data/svg/preserved-transforms.svg | 59 + tests/test_dxf12_outlines.py | 8 +- 5 files changed, 1737 insertions(+), 4 deletions(-) create mode 100644 tests/data/refs/dxf12_outlines__preserved-transforms__svg.out create mode 100644 tests/data/refs/dxf12_outlines__shapes__svg.out create mode 100644 tests/data/svg/preserved-transforms.svg diff --git a/dxf12_outlines.py b/dxf12_outlines.py index e4e72422..cff76cf4 100755 --- a/dxf12_outlines.py +++ b/dxf12_outlines.py @@ -121,7 +121,7 @@ class DxfTwelve(inkex.OutputExtension): if layer is None: layer = 'Layer 1' - node.transform *= inkex.Transform([[scale, 0, 0], [0, -scale, h * scale]]) + node.transform = inkex.Transform([[scale, 0, 0], [0, -scale, h * scale]]) * node.transform node.apply_transform() path = node.path.to_superpath() diff --git a/tests/data/refs/dxf12_outlines__preserved-transforms__svg.out b/tests/data/refs/dxf12_outlines__preserved-transforms__svg.out new file mode 100644 index 00000000..0ebd59ae --- /dev/null +++ b/tests/data/refs/dxf12_outlines__preserved-transforms__svg.out @@ -0,0 +1,224 @@ +999 +"DXF R12 Output" (www.mydxf.blogspot.com) + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1009 + 9 +$EXTMIN + 10 + 0 + 20 + 0 + 9 +$EXTMAX + 10 + 8.5 + 20 + 11 + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES +0 +LINE +8 +Layer 1 +10 +0.000000 +20 +316.800000 +11 +59.266600 +21 +316.800000 +0 +LINE +8 +Layer 1 +10 +59.266600 +20 +316.800000 +11 +59.266600 +21 +232.980100 +0 +LINE +8 +Layer 1 +10 +59.266600 +20 +232.980100 +11 +0.000000 +21 +232.980000 +0 +LINE +8 +Layer 1 +10 +0.000000 +20 +232.980000 +11 +0.000000 +21 +316.800000 +0 +LINE +8 +Layer 1 +10 +18.779900 +20 +295.548000 +11 +28.467500 +21 +295.548000 +0 +LINE +8 +Layer 1 +10 +28.467500 +20 +295.548000 +11 +28.467500 +21 +288.134000 +0 +LINE +8 +Layer 1 +10 +28.467500 +20 +288.134000 +11 +18.779900 +21 +288.134000 +0 +LINE +8 +Layer 1 +10 +18.779900 +20 +288.134000 +11 +18.779900 +21 +295.548000 +0 +LINE +8 +Layer 1 +10 +29.973000 +20 +287.081000 +11 +39.660600 +21 +287.081000 +0 +LINE +8 +Layer 1 +10 +39.660600 +20 +287.081000 +11 +39.660600 +21 +279.668000 +0 +LINE +8 +Layer 1 +10 +39.660600 +20 +279.668000 +11 +29.973000 +21 +279.668000 +0 +LINE +8 +Layer 1 +10 +29.973000 +20 +279.668000 +11 +29.973000 +21 +287.081000 +0 +LINE +8 +Layer 1 +10 +52.459800 +20 +271.201000 +11 +42.772200 +21 +271.201000 +0 +LINE +8 +Layer 1 +10 +42.772200 +20 +271.201000 +11 +42.772200 +21 +278.614000 +0 +LINE +8 +Layer 1 +10 +42.772200 +20 +278.614000 +11 +52.459800 +21 +278.614000 +0 +LINE +8 +Layer 1 +10 +52.459800 +20 +278.614000 +11 +52.459800 +21 +271.201000 + 0 +ENDSEC + 0 +EOF \ No newline at end of file diff --git a/tests/data/refs/dxf12_outlines__shapes__svg.out b/tests/data/refs/dxf12_outlines__shapes__svg.out new file mode 100644 index 00000000..b40cadd2 --- /dev/null +++ b/tests/data/refs/dxf12_outlines__shapes__svg.out @@ -0,0 +1,1448 @@ +999 +"DXF R12 Output" (www.mydxf.blogspot.com) + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1009 + 9 +$EXTMIN + 10 + 0 + 20 + 0 + 9 +$EXTMAX + 10 + 8.5 + 20 + 11 + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES +0 +LINE +8 +Layer 1 +10 +3.017080 +20 +280.970000 +11 +-0.374796 +21 +282.217000 +0 +LINE +8 +Layer 1 +10 +-0.374796 +20 +282.217000 +11 +3.017080 +21 +283.464000 +0 +LINE +8 +Layer 1 +10 +3.017080 +20 +283.464000 +11 +2.712711 +21 +282.869281 +0 +LINE +8 +Layer 1 +10 +2.712711 +20 +282.869281 +11 +2.611840 +21 +282.222250 +0 +LINE +8 +Layer 1 +10 +2.611840 +20 +282.222250 +11 +2.713589 +21 +281.572594 +0 +LINE +8 +Layer 1 +10 +2.713589 +20 +281.572594 +11 +3.017080 +21 +280.970000 +0 +LINE +8 +Layer 1 +10 +3.017080 +20 +280.970000 +11 +3.017080 +21 +280.970000 +0 +LINE +8 +Slide2 +10 +221.004000 +20 +147.370000 +11 +218.174759 +21 +145.586463 +0 +LINE +8 +Slide2 +10 +218.174759 +20 +145.586463 +11 +214.876804 +21 +144.080603 +0 +LINE +8 +Slide2 +10 +214.876804 +20 +144.080603 +11 +211.188769 +21 +142.866702 +0 +LINE +8 +Slide2 +10 +211.188769 +20 +142.866702 +11 +207.189288 +21 +141.959037 +0 +LINE +8 +Slide2 +10 +207.189288 +20 +141.959037 +11 +202.956997 +21 +141.371888 +0 +LINE +8 +Slide2 +10 +202.956997 +20 +141.371888 +11 +198.570529 +21 +141.119534 +0 +LINE +8 +Slide2 +10 +198.570529 +20 +141.119534 +11 +194.108518 +21 +141.216255 +0 +LINE +8 +Slide2 +10 +194.108518 +20 +141.216255 +11 +189.649600 +21 +141.676330 +0 +LINE +8 +Slide2 +10 +189.649600 +20 +141.676330 +11 +185.395586 +21 +142.487488 +0 +LINE +8 +Slide2 +10 +185.395586 +20 +142.487488 +11 +181.529797 +21 +143.605807 +0 +LINE +8 +Slide2 +10 +181.529797 +20 +143.605807 +11 +178.103166 +21 +144.998104 +0 +LINE +8 +Slide2 +10 +178.103166 +20 +144.998104 +11 +175.166629 +21 +146.631195 +0 +LINE +8 +Slide2 +10 +175.166629 +20 +146.631195 +11 +172.771119 +21 +148.471896 +0 +LINE +8 +Slide2 +10 +172.771119 +20 +148.471896 +11 +170.967572 +21 +150.487025 +0 +LINE +8 +Slide2 +10 +170.967572 +20 +150.487025 +11 +170.303701 +21 +151.549629 +0 +LINE +8 +Slide2 +10 +170.303701 +20 +151.549629 +11 +169.806920 +21 +152.643397 +0 +LINE +8 +Slide2 +10 +169.806920 +20 +152.643397 +11 +169.483598 +21 +153.764180 +0 +LINE +8 +Slide2 +10 +169.483598 +20 +153.764180 +11 +169.340100 +21 +154.907830 +0 +LINE +8 +Slide2 +10 +169.340100 +20 +154.907830 +11 +169.381479 +21 +156.053546 +0 +LINE +8 +Slide2 +10 +169.381479 +20 +156.053546 +11 +169.604544 +21 +157.180425 +0 +LINE +8 +Slide2 +10 +169.604544 +20 +157.180425 +11 +170.003305 +21 +158.284183 +0 +LINE +8 +Slide2 +10 +170.003305 +20 +158.284183 +11 +170.571770 +21 +159.360534 +0 +LINE +8 +Slide2 +10 +170.571770 +20 +159.360534 +11 +172.193851 +21 +161.413869 +0 +LINE +8 +Slide2 +10 +172.193851 +20 +161.413869 +11 +174.422863 +21 +163.306145 +0 +LINE +8 +Slide2 +10 +174.422863 +20 +163.306145 +11 +177.210879 +21 +165.003075 +0 +LINE +8 +Slide2 +10 +177.210879 +20 +165.003075 +11 +180.509974 +21 +166.470373 +0 +LINE +8 +Slide2 +10 +180.509974 +20 +166.470373 +11 +184.272223 +21 +167.673753 +0 +LINE +8 +Slide2 +10 +184.272223 +20 +167.673753 +11 +188.449700 +21 +168.578930 +0 +LINE +8 +Slide2 +10 +188.449700 +20 +168.578930 +11 +192.863165 +21 +169.137940 +0 +LINE +8 +Slide2 +10 +192.863165 +20 +169.137940 +11 +197.312117 +21 +169.334027 +0 +LINE +8 +Slide2 +10 +197.312117 +20 +169.334027 +11 +201.716726 +21 +169.179702 +0 +LINE +8 +Slide2 +10 +201.716726 +20 +169.179702 +11 +205.997163 +21 +168.687477 +0 +LINE +8 +Slide2 +10 +205.997163 +20 +168.687477 +11 +210.073598 +21 +167.869865 +0 +LINE +8 +Slide2 +10 +210.073598 +20 +167.869865 +11 +213.866203 +21 +166.739379 +0 +LINE +8 +Slide2 +10 +213.866203 +20 +166.739379 +11 +217.295146 +21 +165.308530 +0 +LINE +8 +Slide2 +10 +217.295146 +20 +165.308530 +11 +220.280600 +21 +163.589830 +0 +LINE +8 +Slide2 +10 +220.280600 +20 +163.589830 +11 +197.555000 +21 +155.222000 +0 +LINE +8 +Slide2 +10 +197.555000 +20 +155.222000 +11 +221.004000 +21 +147.370000 +0 +LINE +8 +Slide2 +10 +28.222200 +20 +112.889000 +11 +56.444400 +21 +84.666600 +0 +LINE +8 +Slide2 +10 +56.444400 +20 +84.666600 +11 +84.666600 +21 +112.889000 +0 +LINE +8 +Slide2 +10 +84.666600 +20 +112.889000 +11 +112.889000 +21 +84.666600 +0 +LINE +8 +Slide2 +10 +141.111000 +20 +112.889000 +11 +141.166121 +21 +111.676327 +0 +LINE +8 +Slide2 +10 +141.166121 +20 +111.676327 +11 +141.551972 +21 +108.479281 +0 +LINE +8 +Slide2 +10 +141.551972 +20 +108.479281 +11 +141.972273 +21 +106.343324 +0 +LINE +8 +Slide2 +10 +141.972273 +20 +106.343324 +11 +142.599280 +21 +103.959320 +0 +LINE +8 +Slide2 +10 +142.599280 +20 +103.959320 +11 +143.474334 +21 +101.409951 +0 +LINE +8 +Slide2 +10 +143.474334 +20 +101.409951 +11 +144.638775 +21 +98.777900 +0 +LINE +8 +Slide2 +10 +144.638775 +20 +98.777900 +11 +146.133945 +21 +96.145849 +0 +LINE +8 +Slide2 +10 +146.133945 +20 +96.145849 +11 +148.001186 +21 +93.596480 +0 +LINE +8 +Slide2 +10 +148.001186 +20 +93.596480 +11 +150.281837 +21 +91.212476 +0 +LINE +8 +Slide2 +10 +150.281837 +20 +91.212476 +11 +153.017241 +21 +89.076519 +0 +LINE +8 +Slide2 +10 +153.017241 +20 +89.076519 +11 +156.248738 +21 +87.271290 +0 +LINE +8 +Slide2 +10 +156.248738 +20 +87.271290 +11 +158.063440 +21 +86.518537 +0 +LINE +8 +Slide2 +10 +158.063440 +20 +86.518537 +11 +160.017669 +21 +85.879473 +0 +LINE +8 +Slide2 +10 +160.017669 +20 +85.879473 +11 +162.116592 +21 +85.364431 +0 +LINE +8 +Slide2 +10 +162.116592 +20 +85.364431 +11 +164.365376 +21 +84.983749 +0 +LINE +8 +Slide2 +10 +164.365376 +20 +84.983749 +11 +166.769190 +21 +84.747760 +0 +LINE +8 +Slide2 +10 +166.769190 +20 +84.747760 +11 +169.333200 +21 +84.666800 +0 +LINE +8 +Slide2 +10 +169.333200 +20 +84.666800 +11 +171.817112 +21 +84.747760 +0 +LINE +8 +Slide2 +10 +171.817112 +20 +84.747760 +11 +173.990965 +21 +84.983749 +0 +LINE +8 +Slide2 +10 +173.990965 +20 +84.983749 +11 +175.875431 +21 +85.364431 +0 +LINE +8 +Slide2 +10 +175.875431 +20 +85.364431 +11 +177.491180 +21 +85.879473 +0 +LINE +8 +Slide2 +10 +177.491180 +20 +85.879473 +11 +178.858882 +21 +86.518537 +0 +LINE +8 +Slide2 +10 +178.858882 +20 +86.518537 +11 +179.999207 +21 +87.271290 +0 +LINE +8 +Slide2 +10 +179.999207 +20 +87.271290 +11 +180.932827 +21 +88.127396 +0 +LINE +8 +Slide2 +10 +180.932827 +20 +88.127396 +11 +181.680412 +21 +89.076519 +0 +LINE +8 +Slide2 +10 +181.680412 +20 +89.076519 +11 +182.262633 +21 +90.108324 +0 +LINE +8 +Slide2 +10 +182.262633 +20 +90.108324 +11 +182.700160 +21 +91.212476 +0 +LINE +8 +Slide2 +10 +182.700160 +20 +91.212476 +11 +183.223814 +21 +93.596480 +0 +LINE +8 +Slide2 +10 +183.223814 +20 +93.596480 +11 +183.416739 +21 +96.145849 +0 +LINE +8 +Slide2 +10 +183.416739 +20 +96.145849 +11 +183.444300 +21 +98.777900 +0 +LINE +8 +Slide2 +10 +183.444300 +20 +98.777900 +11 +183.471861 +21 +101.409951 +0 +LINE +8 +Slide2 +10 +183.471861 +20 +101.409951 +11 +183.664786 +21 +103.959320 +0 +LINE +8 +Slide2 +10 +183.664786 +20 +103.959320 +11 +184.188440 +21 +106.343324 +0 +LINE +8 +Slide2 +10 +184.188440 +20 +106.343324 +11 +184.625967 +21 +107.447476 +0 +LINE +8 +Slide2 +10 +184.625967 +20 +107.447476 +11 +185.208187 +21 +108.479281 +0 +LINE +8 +Slide2 +10 +185.208187 +20 +108.479281 +11 +185.955773 +21 +109.428404 +0 +LINE +8 +Slide2 +10 +185.955773 +20 +109.428404 +11 +186.889393 +21 +110.284510 +0 +LINE +8 +Slide2 +10 +186.889393 +20 +110.284510 +11 +188.029718 +21 +111.037263 +0 +LINE +8 +Slide2 +10 +188.029718 +20 +111.037263 +11 +189.397420 +21 +111.676327 +0 +LINE +8 +Slide2 +10 +189.397420 +20 +111.676327 +11 +191.013169 +21 +112.191369 +0 +LINE +8 +Slide2 +10 +191.013169 +20 +112.191369 +11 +192.897635 +21 +112.572051 +0 +LINE +8 +Slide2 +10 +192.897635 +20 +112.572051 +11 +195.071488 +21 +112.808040 +0 +LINE +8 +Slide2 +10 +195.071488 +20 +112.808040 +11 +197.555400 +21 +112.889000 +0 +LINE +8 +Slide2 +10 +197.555400 +20 +112.889000 +11 +200.119410 +21 +112.808040 +0 +LINE +8 +Slide2 +10 +200.119410 +20 +112.808040 +11 +202.523224 +21 +112.572051 +0 +LINE +8 +Slide2 +10 +202.523224 +20 +112.572051 +11 +204.772008 +21 +112.191369 +0 +LINE +8 +Slide2 +10 +204.772008 +20 +112.191369 +11 +206.870931 +21 +111.676327 +0 +LINE +8 +Slide2 +10 +206.870931 +20 +111.676327 +11 +208.825160 +21 +111.037263 +0 +LINE +8 +Slide2 +10 +208.825160 +20 +111.037263 +11 +210.639862 +21 +110.284510 +0 +LINE +8 +Slide2 +10 +210.639862 +20 +110.284510 +11 +213.871359 +21 +108.479281 +0 +LINE +8 +Slide2 +10 +213.871359 +20 +108.479281 +11 +216.606763 +21 +106.343324 +0 +LINE +8 +Slide2 +10 +216.606763 +20 +106.343324 +11 +218.887414 +21 +103.959320 +0 +LINE +8 +Slide2 +10 +218.887414 +20 +103.959320 +11 +220.754655 +21 +101.409951 +0 +LINE +8 +Slide2 +10 +220.754655 +20 +101.409951 +11 +222.249825 +21 +98.777900 +0 +LINE +8 +Slide2 +10 +222.249825 +20 +98.777900 +11 +223.414266 +21 +96.145849 +0 +LINE +8 +Slide2 +10 +223.414266 +20 +96.145849 +11 +224.289320 +21 +93.596480 +0 +LINE +8 +Slide2 +10 +224.289320 +20 +93.596480 +11 +224.916327 +21 +91.212476 +0 +LINE +8 +Slide2 +10 +224.916327 +20 +91.212476 +11 +225.336628 +21 +89.076519 +0 +LINE +8 +Slide2 +10 +225.336628 +20 +89.076519 +11 +225.722479 +21 +85.879473 +0 +LINE +8 +Slide2 +10 +225.722479 +20 +85.879473 +11 +225.777600 +21 +84.666800 +0 +LINE +8 +Slide2 +10 +69.097300 +20 +31.287100 +11 +56.301700 +21 +33.582820 +0 +LINE +8 +Slide2 +10 +56.301700 +20 +33.582820 +11 +47.156500 +21 +24.343570 +0 +LINE +8 +Slide2 +10 +47.156500 +20 +24.343570 +11 +45.385800 +21 +37.222370 +0 +LINE +8 +Slide2 +10 +45.385800 +20 +37.222370 +11 +33.772700 +21 +43.064880 +0 +LINE +8 +Slide2 +10 +33.772700 +20 +43.064880 +11 +45.474000 +21 +48.728680 +0 +LINE +8 +Slide2 +10 +45.474000 +20 +48.728680 +11 +47.441930 +21 +61.578780 +0 +LINE +8 +Slide2 +10 +47.441930 +20 +61.578780 +11 +56.444420 +21 +52.200420 +0 +LINE +8 +Slide2 +10 +56.444420 +20 +52.200420 +11 +69.273720 +21 +54.299720 +0 +LINE +8 +Slide2 +10 +69.273720 +20 +54.299720 +11 +63.136290 +21 +42.839820 +0 +LINE +8 +Slide2 +10 +63.136290 +20 +42.839820 +11 +69.097300 +21 +31.287100 + 0 +ENDSEC + 0 +EOF \ No newline at end of file diff --git a/tests/data/svg/preserved-transforms.svg b/tests/data/svg/preserved-transforms.svg new file mode 100644 index 00000000..db4eaa75 --- /dev/null +++ b/tests/data/svg/preserved-transforms.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + diff --git a/tests/test_dxf12_outlines.py b/tests/test_dxf12_outlines.py index f1a6633b..c64dc740 100644 --- a/tests/test_dxf12_outlines.py +++ b/tests/test_dxf12_outlines.py @@ -1,7 +1,9 @@ # coding=utf-8 from dxf12_outlines import DxfTwelve -from inkex.tester import InkscapeExtensionTestMixin, TestCase +from inkex.tester import ComparisonMixin, TestCase -class TestDXF12OutlinesBasic(InkscapeExtensionTestMixin, TestCase): - effect_class = DxfTwelve +class TestDXF12OutlinesBasic(ComparisonMixin, TestCase): + compare_file = ["svg/shapes.svg", "svg/preserved-transforms.svg"] + comparisons = [()] + effect_class = DxfTwelve \ No newline at end of file -- GitLab