aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHiroshi Murayama <opiopan@gmail.com>2019-12-28 23:45:33 +0900
committerHiroshi Murayama <opiopan@gmail.com>2019-12-28 23:45:33 +0900
commit244fcaa5346f4fad819cc2b72857cfb2c472944a (patch)
treed849592e18a1afe61fb98f3207dabdaea1f5336e /tests
parentd7a069324222bb8f69adc9b1c815fc9f3f6a29d6 (diff)
downloadpcb-tools-extension-244fcaa5346f4fad819cc2b72857cfb2c472944a.tar.gz
pcb-tools-extension-244fcaa5346f4fad819cc2b72857cfb2c472944a.tar.bz2
pcb-tools-extension-244fcaa5346f4fad819cc2b72857cfb2c472944a.zip
add a function that generate filled gerberdata with representing internal shape by fliping polarity
Diffstat (limited to 'tests')
-rw-r--r--tests/data/ref_dxf_metric.dxf304
-rw-r--r--tests/data/ref_dxf_mousebites.dxf344
-rw-r--r--tests/expects/dxf_offset.gtl82
-rw-r--r--tests/expects/dxf_rotate.gtl82
-rw-r--r--tests/expects/dxf_save_fill.gtl71
-rw-r--r--tests/expects/dxf_save_fill_simple.gtl78
-rw-r--r--tests/expects/dxf_save_line.gtl84
-rw-r--r--tests/expects/dxf_save_line.txt84
-rw-r--r--tests/expects/dxf_save_mousebites.gtl592
-rw-r--r--tests/expects/dxf_save_mousebites.txt592
-rw-r--r--tests/expects/dxf_to_inch.gtl82
-rw-r--r--tests/test_dxf.py30
12 files changed, 1934 insertions, 491 deletions
diff --git a/tests/data/ref_dxf_metric.dxf b/tests/data/ref_dxf_metric.dxf
index 89af1e7..8861d4b 100644
--- a/tests/data/ref_dxf_metric.dxf
+++ b/tests/data/ref_dxf_metric.dxf
@@ -271,49 +271,105 @@ AcDbPolyline
43
0.0
10
-9
+40
20
0
10
-1
+9.9999999999999982
20
-0
+1.1102230246251565e-15
42
--0.41421356237309515
+-0.41421356237309565
10
-0
+1.1102230246251565e-15
+20
+10
+10
+1.1102230246251565e-15
20
-0.99999999999999978
+40
+42
+-0.41421356237309553
+10
10
-6.9388939039072284e-16
20
-9
+50
+10
+40
+20
+50
+42
+-0.41421356237309603
+10
+50
+20
+40
+10
+50
+20
+9.9999999999999982
42
-0.41421356237309548
+0
+LWPOLYLINE
+5
+101
+100
+AcDbEntity
+8
+0
+100
+AcDbPolyline
+90
+8
+70
+1
+43
+0.0
10
-0.99999999999999978
+74.270404858697972
20
+75.039392445007664
10
+74.270404858697972
+20
+45.039392445007664
+42
+-0.41421356237309553
10
-9
+64.270404858697972
20
+35.039392445007664
10
+34.270404858697965
+20
+35.039392445007664
42
--0.41421356237309509
+-0.41421356237309553
10
+24.270404858697965
+20
+45.039392445007664
10
+24.270404858697958
20
-9
+75.039392445007664
+42
+-0.41421356237309553
10
+34.270404858697965
+20
+85.039392445007678
10
+64.270404858697972
20
-1
+85.039392445007678
42
--0.41421356237309548
+-0.41421356237309603
0
CIRCLE
5
-101
+102
100
AcDbEntity
8
@@ -321,17 +377,121 @@ AcDbEntity
100
AcDbCircle
10
-0.61705708382705282
+80.154604804025013
20
+12.631646043929035
+30
+0
+40
+12.546259950593821
+210
+0
+220
+0
+230
+1
+0
+CIRCLE
5
+103
+100
+AcDbEntity
+8
+0
+100
+AcDbCircle
+10
+50
+20
+65
30
0
40
-0.29999999999999999
+10.277260744660863
+210
+0
+220
+0
+230
+1
+0
+ARC
+5
+104
+100
+AcDbEntity
+8
+0
+100
+AcDbCircle
+10
+50
+20
+65
+30
+0
+40
+6.4592498736207826
+210
+0
+220
+-0
+230
+1
+100
+AcDbArc
+50
+90
+51
+345.73898023603914
+0
+LINE
+5
+105
+100
+AcDbEntity
+8
+0
+100
+AcDbLine
+10
+50
+20
+65
+30
+0
+11
+56.26019871530297
+21
+63.408830312383643
+31
+0
+0
+LINE
+5
+106
+100
+AcDbEntity
+8
+0
+100
+AcDbLine
+10
+50
+20
+65
+30
+0
+11
+50
+21
+71.459249873620777
+31
+0
0
LWPOLYLINE
5
-102
+107
100
AcDbEntity
8
@@ -339,25 +499,115 @@ AcDbEntity
100
AcDbPolyline
90
-3
+4
70
1
43
0.0
10
-0.91705708382705309
+38.203772564818578
20
-7.5106817728417301
-42
--0.67748879940688445
+42.206179116779516
+10
+13.451174232106741
+20
+42.206179116779516
+10
+13.451174232106741
+20
+13.596032991956758
+10
+38.203772564818578
+20
+13.596032991956758
+0
+LINE
+5
+108
+100
+AcDbEntity
+8
+0
+100
+AcDbLine
+10
+80
+20
+85
+30
+0
+11
+80
+21
+35
+31
+0
+0
+LINE
+5
+109
+100
+AcDbEntity
+8
+0
+100
+AcDbLine
10
-0.39955725374872897
+90
20
-7.3040569342673214
+85
+30
+0
+11
+90
+21
+35
+31
+0
+0
+LINE
+5
+110
+100
+AcDbEntity
+8
+0
+100
+AcDbLine
10
-0.61705708382705282
20
-7.5106817728417301
+20
+32.938987371135568
+30
+0
+11
+32.582672402541192
+21
+32.938987371135568
+31
+0
+0
+LINE
+5
+111
+100
+AcDbEntity
+8
+0
+100
+AcDbLine
+10
+32.582672402541192
+20
+32.938987371135568
+30
+0
+11
+32.582672402541192
+21
+17.844276543429842
+31
+0
0
ENDSEC
0
diff --git a/tests/data/ref_dxf_mousebites.dxf b/tests/data/ref_dxf_mousebites.dxf
deleted file mode 100644
index fcc56a5..0000000
--- a/tests/data/ref_dxf_mousebites.dxf
+++ /dev/null
@@ -1,344 +0,0 @@
-0
-SECTION
-2
-HEADER
-9
-$INSUNITS
-70
-4
-9
-$ACADVER
-1
-AC1014
-9
-$HANDSEED
-5
-FFFF
-0
-ENDSEC
-0
-SECTION
-2
-TABLES
-0
-TABLE
-2
-VPORT
-5
-8
-100
-AcDbSymbolTable
-0
-ENDTAB
-0
-TABLE
-2
-LTYPE
-5
-5
-100
-AcDbSymbolTable
-0
-LTYPE
-5
-14
-100
-AcDbSymbolTableRecord
-100
-AcDbLinetypeTableRecord
-2
-BYBLOCK
-70
-0
-0
-LTYPE
-5
-15
-100
-AcDbSymbolTableRecord
-100
-AcDbLinetypeTableRecord
-2
-BYLAYER
-70
-0
-0
-ENDTAB
-0
-TABLE
-2
-LAYER
-5
-2
-100
-AcDbSymbolTable
-70
-2
-0
-LAYER
-5
-50
-100
-AcDbSymbolTableRecord
-100
-AcDbLayerTableRecord
-2
-0
-70
-0
-6
-CONTINUOUS
-0
-ENDTAB
-0
-TABLE
-2
-STYLE
-5
-3
-100
-AcDbSymbolTable
-70
-1
-0
-STYLE
-5
-11
-100
-AcDbSymbolTableRecord
-100
-AcDbTextStyleTableRecord
-2
-STANDARD
-70
-0
-0
-ENDTAB
-0
-TABLE
-2
-VIEW
-5
-6
-100
-AcDbSymbolTable
-70
-0
-0
-ENDTAB
-0
-TABLE
-2
-UCS
-5
-7
-100
-AcDbSymbolTable
-70
-0
-0
-ENDTAB
-0
-TABLE
-2
-APPID
-5
-9
-100
-AcDbSymbolTable
-70
-2
-0
-APPID
-5
-12
-100
-AcDbSymbolTableRecord
-100
-AcDbRegAppTableRecord
-2
-ACAD
-70
-0
-0
-ENDTAB
-0
-TABLE
-2
-DIMSTYLE
-5
-A
-100
-AcDbSymbolTable
-70
-1
-0
-ENDTAB
-0
-TABLE
-2
-BLOCK_RECORD
-5
-1
-100
-AcDbSymbolTable
-70
-1
-0
-BLOCK_RECORD
-5
-1F
-100
-AcDbSymbolTableRecord
-100
-AcDbBlockTableRecord
-2
-*MODEL_SPACE
-0
-BLOCK_RECORD
-5
-1B
-100
-AcDbSymbolTableRecord
-100
-AcDbBlockTableRecord
-2
-*PAPER_SPACE
-0
-ENDTAB
-0
-ENDSEC
-0
-SECTION
-2
-BLOCKS
-0
-BLOCK
-5
-20
-100
-AcDbEntity
-100
-AcDbBlockBegin
-2
-*MODEL_SPACE
-0
-ENDBLK
-5
-21
-100
-AcDbEntity
-100
-AcDbBlockEnd
-0
-BLOCK
-5
-1C
-100
-AcDbEntity
-100
-AcDbBlockBegin
-2
-*PAPER_SPACE
-0
-ENDBLK
-5
-1D
-100
-AcDbEntity
-100
-AcDbBlockEnd
-0
-ENDSEC
-0
-SECTION
-2
-ENTITIES
-0
-LINE
-5
-100
-100
-AcDbEntity
-8
-0
-100
-AcDbLine
-10
-0.99999999999999933
-20
-9.0000000000000018
-30
-0
-11
-0.99999999999999967
-21
-0.99999999999999967
-31
-0
-0
-LINE
-5
-101
-100
-AcDbEntity
-8
-0
-100
-AcDbLine
-10
-5
-20
-9.0000000000000018
-30
-0
-11
-5
-21
-0.99999999999999967
-31
-0
-0
-ENDSEC
-0
-SECTION
-2
-OBJECTS
-0
-DICTIONARY
-5
-C
-100
-AcDbDictionary
-3
-ACAD_GROUP
-350
-D
-3
-ACAD_MLINESTYLE
-350
-17
-0
-DICTIONARY
-5
-D
-100
-AcDbDictionary
-0
-DICTIONARY
-5
-1A
-330
-C
-100
-AcDbDictionary
-0
-DICTIONARY
-5
-17
-100
-AcDbDictionary
-0
-ENDSEC
-0
-EOF
diff --git a/tests/expects/dxf_offset.gtl b/tests/expects/dxf_offset.gtl
index ff0cdda..df1b015 100644
--- a/tests/expects/dxf_offset.gtl
+++ b/tests/expects/dxf_offset.gtl
@@ -6,36 +6,88 @@ G75*
%LPD*%
D10*
G01*
-X200000Y50000D02*
+X910000Y900000D02*
G75*
G01*
-X120000Y50000D01*
+X910000Y400000D01*
+G01*
+X1010000Y900000D02*
+G75*
+G01*
+X1010000Y400000D01*
+G01*
+X310000Y379390D02*
+G75*
+G01*
+X435827Y379390D01*
+G01*
+X435827Y228443D01*
+G01*
+X510000Y50000D02*
+G75*
+G01*
+X210000Y50000D01*
G02*
-X110000Y60000I0J10000D01*
+X110000Y150000I0J100000D01*
G01*
-X110000Y140000D01*
+X110000Y450000D01*
G02*
-X120000Y150000I10000J0D01*
+X210000Y550000I100000J0D01*
G01*
-X200000Y150000D01*
+X510000Y550000D01*
G02*
-X210000Y140000I0J-10000D01*
+X610000Y450000I0J-100000D01*
G01*
-X210000Y60000D01*
+X610000Y150000D01*
G02*
-X200000Y50000I-10000J0D01*
+X510000Y50000I-100000J0D01*
G01*
-X119171Y125107D02*
+X852704Y800394D02*
G75*
+G01*
+X852704Y500394D01*
G02*
-X113996Y123041I-3000J0D01*
+X752704Y400394I-100000J0D01*
G01*
-X116171Y125107D01*
+X452704Y400394D01*
+G02*
+X352704Y500394I0J100000D01*
G01*
-X119171Y125107D01*
+X352704Y800394D01*
+G02*
+X452704Y900394I100000J0D01*
+G01*
+X752704Y900394D01*
+G02*
+X852704Y800394I0J-100000D01*
G01*
-X119171Y100000D02*
+X492038Y472062D02*
+G75*
+G01*
+X244512Y472062D01*
+G01*
+X244512Y185960D01*
+G01*
+X492038Y185960D01*
+G01*
+X492038Y472062D01*
+G01*
+X1037009Y176316D02*
+G75*
+G03*
+X1037009Y176316I-125463J0D01*
+G01*
+X712773Y700000D02*
G75*
G03*
-X119171Y100000I-3000J0D01*
+X712773Y700000I-102773J0D01*
+G01*
+X610000Y700000D02*
+G75*
+G01*
+X610000Y764592D01*
+G03*
+X672602Y684088I0J-64592D01*
+G01*
+X610000Y700000D01*
M02*
diff --git a/tests/expects/dxf_rotate.gtl b/tests/expects/dxf_rotate.gtl
index c6449ca..5c04b64 100644
--- a/tests/expects/dxf_rotate.gtl
+++ b/tests/expects/dxf_rotate.gtl
@@ -6,36 +6,88 @@ G75*
%LPD*%
D10*
G01*
-X124805Y2611D02*
+X501270Y1044184D02*
G75*
G01*
-X49630Y-24751D01*
+X672280Y574337D01*
+G01*
+X595239Y1078386D02*
+G75*
+G01*
+X766249Y608539D01*
+G01*
+X115513Y349758D02*
+G75*
+G01*
+X233752Y392793D01*
+G01*
+X285379Y250949D01*
+G01*
+X416110Y108637D02*
+G75*
+G01*
+X134202Y6031D01*
G02*
-X36813Y-18774I-3420J9397D01*
+X6031Y65798I-34202J93969D01*
G01*
-X9451Y56401D01*
+X-96575Y347706D01*
G02*
-X15428Y69218I9397J3420D01*
+X-36808Y475877I93969J34202D01*
G01*
-X90603Y96580D01*
+X245100Y578483D01*
G02*
-X103420Y90603I3420J-9397D01*
+X373271Y518716I34202J-93969D01*
G01*
-X130782Y15428D01*
+X475877Y236808D01*
G02*
-X124805Y2611I-9397J-3420D01*
+X416110Y108637I-93969J-34202D01*
G01*
-X23162Y45543D02*
+X481496Y930988D02*
G75*
+G01*
+X584102Y649080D01*
G02*
-X19006Y41831I-2819J-1026D01*
+X524335Y520909I-93969J-34202D01*
G01*
-X20343Y44517D01*
+X242427Y418303D01*
+G02*
+X114256Y478070I-34202J93969D01*
G01*
-X23162Y45543D01*
+X11650Y759978D01*
+G02*
+X71417Y888149I93969J34202D01*
+G01*
+X353325Y990755D01*
+G02*
+X481496Y930988I34202J-93969D01*
G01*
-X31749Y21950D02*
+X254877Y499102D02*
+G75*
+G01*
+X22279Y414443D01*
+G01*
+X120131Y145595D01*
+G01*
+X352730Y230254D01*
+G01*
+X254877Y499102D01*
+G01*
+X868133Y407583D02*
+G75*
+G03*
+X868133Y407583I-117896J-42911D01*
+G01*
+X384341Y788789D02*
G75*
G03*
-X31749Y21950I-2819J-1026D01*
+X384341Y788789I-96575J-35150D01*
+G01*
+X287766Y753639D02*
+G75*
+G01*
+X265674Y814336D01*
+G03*
+X352035Y760098I22092J-60697D01*
+G01*
+X287766Y753639D01*
M02*
diff --git a/tests/expects/dxf_save_fill.gtl b/tests/expects/dxf_save_fill.gtl
index f18c9f7..4b82fb2 100644
--- a/tests/expects/dxf_save_fill.gtl
+++ b/tests/expects/dxf_save_fill.gtl
@@ -7,37 +7,78 @@ G75*
D10*
G36*
G01*
-X90000Y0D02*
+X400000Y0D02*
G75*
G01*
-X10000Y0D01*
+X100000Y0D01*
G02*
-X0Y10000I0J10000D01*
+X0Y100000I0J100000D01*
G01*
-X0Y90000D01*
+X0Y400000D01*
G02*
-X10000Y100000I10000J0D01*
+X100000Y500000I100000J0D01*
G01*
-X90000Y100000D01*
+X400000Y500000D01*
G02*
-X100000Y90000I0J-10000D01*
+X500000Y400000I0J-100000D01*
G01*
-X100000Y10000D01*
+X500000Y100000D01*
G02*
-X90000Y0I-10000J0D01*
+X400000Y0I-100000J0D01*
G01*
-X9171Y75107D02*
+X742704Y750394D02*
G75*
+G01*
+X742704Y450394D01*
+G02*
+X642704Y350394I-100000J0D01*
+G01*
+X342704Y350394D01*
+G02*
+X242704Y450394I0J100000D01*
+G01*
+X242704Y750394D01*
+G02*
+X342704Y850394I100000J0D01*
+G01*
+X642704Y850394D01*
G02*
-X3996Y73041I-3000J0D01*
+X742704Y750394I0J-100000D01*
+G01*
+X927009Y126316D02*
+G75*
+G03*
+X927009Y126316I-125463J0D01*
+G37*
+%LPC*%
+G36*
G01*
-X6171Y75107D01*
+X382038Y422062D02*
+G75*
+G01*
+X134512Y422062D01*
+G01*
+X134512Y135960D01*
G01*
-X9171Y75107D01*
+X382038Y135960D01*
+G01*
+X382038Y422062D01*
+G01*
+X602773Y650000D02*
+G75*
+G03*
+X602773Y650000I-102773J0D01*
+G37*
+%LPD*%
+G36*
G01*
-X9171Y50000D02*
+X500000Y650000D02*
G75*
+G01*
+X500000Y714592D01*
G03*
-X9171Y50000I-3000J0D01*
+X562602Y634088I0J-64592D01*
+G01*
+X500000Y650000D01*
G37*
M02*
diff --git a/tests/expects/dxf_save_fill_simple.gtl b/tests/expects/dxf_save_fill_simple.gtl
new file mode 100644
index 0000000..5ff4d55
--- /dev/null
+++ b/tests/expects/dxf_save_fill_simple.gtl
@@ -0,0 +1,78 @@
+%MOMM*%
+%FSLAX34Y34*%
+%IPPOS*%
+%ADD10C,0*%
+G75*
+%LPD*%
+D10*
+G36*
+G01*
+X400000Y0D02*
+G75*
+G01*
+X100000Y0D01*
+G02*
+X0Y100000I0J100000D01*
+G01*
+X0Y400000D01*
+G02*
+X100000Y500000I100000J0D01*
+G01*
+X400000Y500000D01*
+G02*
+X500000Y400000I0J-100000D01*
+G01*
+X500000Y100000D01*
+G02*
+X400000Y0I-100000J0D01*
+G01*
+X742704Y750394D02*
+G75*
+G01*
+X742704Y450394D01*
+G02*
+X642704Y350394I-100000J0D01*
+G01*
+X342704Y350394D01*
+G02*
+X242704Y450394I0J100000D01*
+G01*
+X242704Y750394D01*
+G02*
+X342704Y850394I100000J0D01*
+G01*
+X642704Y850394D01*
+G02*
+X742704Y750394I0J-100000D01*
+G01*
+X382038Y422062D02*
+G75*
+G01*
+X134512Y422062D01*
+G01*
+X134512Y135960D01*
+G01*
+X382038Y135960D01*
+G01*
+X382038Y422062D01*
+G01*
+X927009Y126316D02*
+G75*
+G03*
+X927009Y126316I-125463J0D01*
+G01*
+X602773Y650000D02*
+G75*
+G03*
+X602773Y650000I-102773J0D01*
+G01*
+X500000Y650000D02*
+G75*
+G01*
+X500000Y714592D01*
+G03*
+X562602Y634088I0J-64592D01*
+G01*
+X500000Y650000D01*
+G37*
+M02*
diff --git a/tests/expects/dxf_save_line.gtl b/tests/expects/dxf_save_line.gtl
index d1966ad..b3ee8f1 100644
--- a/tests/expects/dxf_save_line.gtl
+++ b/tests/expects/dxf_save_line.gtl
@@ -1,41 +1,93 @@
%MOMM*%
%FSLAX34Y34*%
%IPPOS*%
-%ADD10C,0*%
+%ADD10C,0.2*%
G75*
%LPD*%
D10*
G01*
-X90000Y0D02*
+X800000Y850000D02*
G75*
G01*
-X10000Y0D01*
+X800000Y350000D01*
+G01*
+X900000Y850000D02*
+G75*
+G01*
+X900000Y350000D01*
+G01*
+X200000Y329390D02*
+G75*
+G01*
+X325827Y329390D01*
+G01*
+X325827Y178443D01*
+G01*
+X400000Y0D02*
+G75*
+G01*
+X100000Y0D01*
G02*
-X0Y10000I0J10000D01*
+X0Y100000I0J100000D01*
G01*
-X0Y90000D01*
+X0Y400000D01*
G02*
-X10000Y100000I10000J0D01*
+X100000Y500000I100000J0D01*
G01*
-X90000Y100000D01*
+X400000Y500000D01*
G02*
-X100000Y90000I0J-10000D01*
+X500000Y400000I0J-100000D01*
G01*
-X100000Y10000D01*
+X500000Y100000D01*
G02*
-X90000Y0I-10000J0D01*
+X400000Y0I-100000J0D01*
G01*
-X9171Y75107D02*
+X742704Y750394D02*
G75*
+G01*
+X742704Y450394D01*
G02*
-X3996Y73041I-3000J0D01*
+X642704Y350394I-100000J0D01*
G01*
-X6171Y75107D01*
+X342704Y350394D01*
+G02*
+X242704Y450394I0J100000D01*
G01*
-X9171Y75107D01*
+X242704Y750394D01*
+G02*
+X342704Y850394I100000J0D01*
+G01*
+X642704Y850394D01*
+G02*
+X742704Y750394I0J-100000D01*
G01*
-X9171Y50000D02*
+X382038Y422062D02*
+G75*
+G01*
+X134512Y422062D01*
+G01*
+X134512Y135960D01*
+G01*
+X382038Y135960D01*
+G01*
+X382038Y422062D01*
+G01*
+X927009Y126316D02*
+G75*
+G03*
+X927009Y126316I-125463J0D01*
+G01*
+X602773Y650000D02*
G75*
G03*
-X9171Y50000I-3000J0D01*
+X602773Y650000I-102773J0D01*
+G01*
+X500000Y650000D02*
+G75*
+G01*
+X500000Y714592D01*
+G03*
+X562602Y634088I0J-64592D01*
+G01*
+X500000Y650000D01*
M02*
diff --git a/tests/expects/dxf_save_line.txt b/tests/expects/dxf_save_line.txt
new file mode 100644
index 0000000..c3d73d4
--- /dev/null
+++ b/tests/expects/dxf_save_line.txt
@@ -0,0 +1,84 @@
+M48
+FMAT,2
+ICI,OFF
+METRIC,TZ,000.000
+T01C0.200
+%
+G90
+M71
+T01
+G00X80000Y85000
+M15
+G01X80000Y35000
+M16
+G05
+
+G00X90000Y85000
+M15
+G01X90000Y35000
+M16
+G05
+
+G00X20000Y32939
+M15
+G01X32583Y32939
+G01X32583Y17844
+M16
+G05
+
+G00X40000Y0
+M15
+G01X10000Y0
+G02X0Y10000I0J10000
+G01X0Y40000
+G02X10000Y50000I10000J0
+G01X40000Y50000
+G02X50000Y40000I0J-10000
+G01X50000Y10000
+G02X40000Y0I-10000J0
+M16
+G05
+
+G00X74270Y75039
+M15
+G01X74270Y45039
+G02X64270Y35039I-10000J0
+G01X34270Y35039
+G02X24270Y45039I0J10000
+G01X24270Y75039
+G02X34270Y85039I10000J0
+G01X64270Y85039
+G02X74270Y75039I0J-10000
+M16
+G05
+
+G00X38204Y42206
+M15
+G01X13451Y42206
+G01X13451Y13596
+G01X38204Y13596
+G01X38204Y42206
+M16
+G05
+
+G00X92701Y12632
+M15
+G03X92701Y12632I-12546J0
+M16
+G05
+
+G00X60277Y65000
+M15
+G03X60277Y65000I-10277J0
+M16
+G05
+
+G00X50000Y65000
+M15
+G01X50000Y71459
+G03X56260Y63409I0J-6459
+G01X50000Y65000
+M16
+G05
+
+M30
diff --git a/tests/expects/dxf_save_mousebites.gtl b/tests/expects/dxf_save_mousebites.gtl
index 282234d..64cc6d8 100644
--- a/tests/expects/dxf_save_mousebites.gtl
+++ b/tests/expects/dxf_save_mousebites.gtl
@@ -5,24 +5,578 @@
G75*
%LPD*%
D10*
-X10000Y90000D03*
-X10000Y80000D03*
-X10000Y70000D03*
-X10000Y60000D03*
-X10000Y50000D03*
-X10000Y40000D03*
-X10000Y30000D03*
-X10000Y20000D03*
-X10000Y10000D03*
-
-X50000Y90000D03*
-X50000Y80000D03*
-X50000Y70000D03*
-X50000Y60000D03*
-X50000Y50000D03*
-X50000Y40000D03*
-X50000Y30000D03*
-X50000Y20000D03*
-X50000Y10000D03*
+X800000Y850000D03*
+X800000Y836000D03*
+X800000Y822000D03*
+X800000Y808000D03*
+X800000Y794000D03*
+X800000Y780000D03*
+X800000Y766000D03*
+X800000Y752000D03*
+X800000Y738000D03*
+X800000Y724000D03*
+X800000Y710000D03*
+X800000Y696000D03*
+X800000Y682000D03*
+X800000Y668000D03*
+X800000Y654000D03*
+X800000Y640000D03*
+X800000Y626000D03*
+X800000Y612000D03*
+X800000Y598000D03*
+X800000Y584000D03*
+X800000Y570000D03*
+X800000Y556000D03*
+X800000Y542000D03*
+X800000Y528000D03*
+X800000Y514000D03*
+X800000Y500000D03*
+X800000Y486000D03*
+X800000Y472000D03*
+X800000Y458000D03*
+X800000Y444000D03*
+X800000Y430000D03*
+X800000Y416000D03*
+X800000Y402000D03*
+X800000Y388000D03*
+X800000Y374000D03*
+X800000Y360000D03*
+
+X900000Y850000D03*
+X900000Y836000D03*
+X900000Y822000D03*
+X900000Y808000D03*
+X900000Y794000D03*
+X900000Y780000D03*
+X900000Y766000D03*
+X900000Y752000D03*
+X900000Y738000D03*
+X900000Y724000D03*
+X900000Y710000D03*
+X900000Y696000D03*
+X900000Y682000D03*
+X900000Y668000D03*
+X900000Y654000D03*
+X900000Y640000D03*
+X900000Y626000D03*
+X900000Y612000D03*
+X900000Y598000D03*
+X900000Y584000D03*
+X900000Y570000D03*
+X900000Y556000D03*
+X900000Y542000D03*
+X900000Y528000D03*
+X900000Y514000D03*
+X900000Y500000D03*
+X900000Y486000D03*
+X900000Y472000D03*
+X900000Y458000D03*
+X900000Y444000D03*
+X900000Y430000D03*
+X900000Y416000D03*
+X900000Y402000D03*
+X900000Y388000D03*
+X900000Y374000D03*
+X900000Y360000D03*
+
+X200000Y329390D03*
+X214000Y329390D03*
+X228000Y329390D03*
+X242000Y329390D03*
+X256000Y329390D03*
+X270000Y329390D03*
+X284000Y329390D03*
+X298000Y329390D03*
+X312000Y329390D03*
+X325827Y329217D03*
+X325827Y315217D03*
+X325827Y301217D03*
+X325827Y287217D03*
+X325827Y273217D03*
+X325827Y259217D03*
+X325827Y245217D03*
+X325827Y231217D03*
+X325827Y217217D03*
+X325827Y203217D03*
+X325827Y189217D03*
+
+X400000Y0D03*
+X386000Y0D03*
+X372000Y0D03*
+X358000Y0D03*
+X344000Y0D03*
+X330000Y0D03*
+X316000Y0D03*
+X302000Y0D03*
+X288000Y0D03*
+X274000Y0D03*
+X260000Y0D03*
+X246000Y0D03*
+X232000Y0D03*
+X218000Y0D03*
+X204000Y0D03*
+X190000Y0D03*
+X176000Y0D03*
+X162000Y0D03*
+X148000Y0D03*
+X134000Y0D03*
+X120000Y0D03*
+X106000Y0D03*
+X92009Y320D03*
+X78177Y2410D03*
+X64773Y6410D03*
+X52057Y12242D03*
+X40280Y19790D03*
+X29672Y28909D03*
+X20440Y39418D03*
+X12764Y51113D03*
+X6796Y63764D03*
+X2652Y77125D03*
+X412Y90933D03*
+X0Y104920D03*
+X0Y118920D03*
+X0Y132920D03*
+X0Y146920D03*
+X0Y160920D03*
+X0Y174920D03*
+X0Y188920D03*
+X0Y202920D03*
+X0Y216920D03*
+X0Y230920D03*
+X0Y244920D03*
+X0Y258920D03*
+X0Y272920D03*
+X0Y286920D03*
+X0Y300920D03*
+X0Y314920D03*
+X0Y328920D03*
+X0Y342920D03*
+X0Y356920D03*
+X0Y370920D03*
+X0Y384920D03*
+X0Y398920D03*
+X834Y412884D03*
+X3602Y426596D03*
+X8256Y439788D03*
+X14706Y452201D03*
+X22825Y463592D03*
+X32454Y473739D03*
+X43404Y482444D03*
+X55463Y489534D03*
+X68392Y494873D03*
+X81940Y498356D03*
+X95842Y499914D03*
+X109841Y500000D03*
+X123841Y500000D03*
+X137841Y500000D03*
+X151841Y500000D03*
+X165841Y500000D03*
+X179841Y500000D03*
+X193841Y500000D03*
+X207841Y500000D03*
+X221841Y500000D03*
+X235841Y500000D03*
+X249841Y500000D03*
+X263841Y500000D03*
+X277841Y500000D03*
+X291841Y500000D03*
+X305841Y500000D03*
+X319841Y500000D03*
+X333841Y500000D03*
+X347841Y500000D03*
+X361841Y500000D03*
+X375841Y500000D03*
+X389841Y500000D03*
+X403840Y499926D03*
+X417746Y498413D03*
+X431305Y494974D03*
+X444252Y489676D03*
+X456333Y482623D03*
+X467311Y473954D03*
+X476972Y463838D03*
+X485127Y452472D03*
+X491617Y440080D03*
+X496313Y426903D03*
+X499125Y413200D03*
+X500000Y399239D03*
+X500000Y385239D03*
+X500000Y371239D03*
+X500000Y357239D03*
+X500000Y343239D03*
+X500000Y329239D03*
+X500000Y315239D03*
+X500000Y301239D03*
+X500000Y287239D03*
+X500000Y273239D03*
+X500000Y259239D03*
+X500000Y245239D03*
+X500000Y231239D03*
+X500000Y217239D03*
+X500000Y203239D03*
+X500000Y189239D03*
+X500000Y175239D03*
+X500000Y161239D03*
+X500000Y147239D03*
+X500000Y133239D03*
+X500000Y119239D03*
+X500000Y105239D03*
+X499616Y91250D03*
+X497421Y77435D03*
+X493319Y64061D03*
+X487391Y51391D03*
+X479753Y39672D03*
+X470554Y29133D03*
+X459975Y19981D03*
+X448222Y12395D03*
+X435525Y6523D03*
+X422134Y2480D03*
+X408309Y346D03*
+
+X742704Y750394D03*
+X742704Y736394D03*
+X742704Y722394D03*
+X742704Y708394D03*
+X742704Y694394D03*
+X742704Y680394D03*
+X742704Y666394D03*
+X742704Y652394D03*
+X742704Y638394D03*
+X742704Y624394D03*
+X742704Y610394D03*
+X742704Y596394D03*
+X742704Y582394D03*
+X742704Y568394D03*
+X742704Y554394D03*
+X742704Y540394D03*
+X742704Y526394D03*
+X742704Y512394D03*
+X742704Y498394D03*
+X742704Y484394D03*
+X742704Y470394D03*
+X742704Y456394D03*
+X742384Y442402D03*
+X740294Y428571D03*
+X736294Y415167D03*
+X730462Y402451D03*
+X722914Y390674D03*
+X713795Y380066D03*
+X703286Y370834D03*
+X691591Y363158D03*
+X678940Y357190D03*
+X665579Y353045D03*
+X651771Y350806D03*
+X637784Y350394D03*
+X623784Y350394D03*
+X609784Y350394D03*
+X595784Y350394D03*
+X581784Y350394D03*
+X567784Y350394D03*
+X553784Y350394D03*
+X539784Y350394D03*
+X525784Y350394D03*
+X511784Y350394D03*
+X497784Y350394D03*
+X483784Y350394D03*
+X469784Y350394D03*
+X455784Y350394D03*
+X441784Y350394D03*
+X427784Y350394D03*
+X413784Y350394D03*
+X399784Y350394D03*
+X385784Y350394D03*
+X371784Y350394D03*
+X357784Y350394D03*
+X343784Y350394D03*
+X329820Y351227D03*
+X316108Y353996D03*
+X302916Y358650D03*
+X290503Y365100D03*
+X279112Y373219D03*
+X268965Y382848D03*
+X260261Y393798D03*
+X253170Y405856D03*
+X247831Y418786D03*
+X244348Y432334D03*
+X242791Y446236D03*
+X242704Y460235D03*
+X242704Y474235D03*
+X242704Y488235D03*
+X242704Y502235D03*
+X242704Y516235D03*
+X242704Y530235D03*
+X242704Y544235D03*
+X242704Y558235D03*
+X242704Y572235D03*
+X242704Y586235D03*
+X242704Y600235D03*
+X242704Y614235D03*
+X242704Y628235D03*
+X242704Y642235D03*
+X242704Y656235D03*
+X242704Y670235D03*
+X242704Y684235D03*
+X242704Y698235D03*
+X242704Y712235D03*
+X242704Y726235D03*
+X242704Y740235D03*
+X242778Y754234D03*
+X244291Y768140D03*
+X247731Y781699D03*
+X253028Y794646D03*
+X260081Y806727D03*
+X268750Y817705D03*
+X278866Y827366D03*
+X290232Y835521D03*
+X302624Y842011D03*
+X315801Y846707D03*
+X329504Y849519D03*
+X343465Y850394D03*
+X357465Y850394D03*
+X371465Y850394D03*
+X385465Y850394D03*
+X399465Y850394D03*
+X413465Y850394D03*
+X427465Y850394D03*
+X441465Y850394D03*
+X455465Y850394D03*
+X469465Y850394D03*
+X483465Y850394D03*
+X497465Y850394D03*
+X511465Y850394D03*
+X525465Y850394D03*
+X539465Y850394D03*
+X553465Y850394D03*
+X567465Y850394D03*
+X581465Y850394D03*
+X595465Y850394D03*
+X609465Y850394D03*
+X623465Y850394D03*
+X637465Y850394D03*
+X651454Y850010D03*
+X665269Y847815D03*
+X678643Y843713D03*
+X691313Y837785D03*
+X703032Y830147D03*
+X713571Y820948D03*
+X722723Y810369D03*
+X730309Y798616D03*
+X736181Y785919D03*
+X740224Y772528D03*
+X742358Y758703D03*
+
+X382038Y422062D03*
+X368038Y422062D03*
+X354038Y422062D03*
+X340038Y422062D03*
+X326038Y422062D03*
+X312038Y422062D03*
+X298038Y422062D03*
+X284038Y422062D03*
+X270038Y422062D03*
+X256038Y422062D03*
+X242038Y422062D03*
+X228038Y422062D03*
+X214038Y422062D03*
+X200038Y422062D03*
+X186038Y422062D03*
+X172038Y422062D03*
+X158038Y422062D03*
+X144038Y422062D03*
+X134512Y417588D03*
+X134512Y403588D03*
+X134512Y389588D03*
+X134512Y375588D03*
+X134512Y361588D03*
+X134512Y347588D03*
+X134512Y333588D03*
+X134512Y319588D03*
+X134512Y305588D03*
+X134512Y291588D03*
+X134512Y277588D03*
+X134512Y263588D03*
+X134512Y249588D03*
+X134512Y235588D03*
+X134512Y221588D03*
+X134512Y207588D03*
+X134512Y193588D03*
+X134512Y179588D03*
+X134512Y165588D03*
+X134512Y151588D03*
+X134512Y137588D03*
+X146884Y135960D03*
+X160884Y135960D03*
+X174884Y135960D03*
+X188884Y135960D03*
+X202884Y135960D03*
+X216884Y135960D03*
+X230884Y135960D03*
+X244884Y135960D03*
+X258884Y135960D03*
+X272884Y135960D03*
+X286884Y135960D03*
+X300884Y135960D03*
+X314884Y135960D03*
+X328884Y135960D03*
+X342884Y135960D03*
+X356884Y135960D03*
+X370884Y135960D03*
+X382038Y138807D03*
+X382038Y152807D03*
+X382038Y166807D03*
+X382038Y180807D03*
+X382038Y194807D03*
+X382038Y208807D03*
+X382038Y222807D03*
+X382038Y236807D03*
+X382038Y250807D03*
+X382038Y264807D03*
+X382038Y278807D03*
+X382038Y292807D03*
+X382038Y306807D03*
+X382038Y320807D03*
+X382038Y334807D03*
+X382038Y348807D03*
+X382038Y362807D03*
+X382038Y376807D03*
+X382038Y390807D03*
+X382038Y404807D03*
+X382038Y418807D03*
+
+X927009Y126316D03*
+X926228Y140287D03*
+X923897Y154085D03*
+X920044Y167536D03*
+X914717Y180475D03*
+X907982Y192741D03*
+X899924Y204180D03*
+X890641Y214651D03*
+X880251Y224022D03*
+X868881Y232179D03*
+X856674Y239019D03*
+X843781Y244457D03*
+X830363Y248425D03*
+X816586Y250874D03*
+X802622Y251774D03*
+X788645Y251114D03*
+X774828Y248901D03*
+X761344Y245164D03*
+X748360Y239948D03*
+X736037Y233319D03*
+X724529Y225358D03*
+X713979Y216166D03*
+X704519Y205856D03*
+X696265Y194557D03*
+X689321Y182409D03*
+X683773Y169563D03*
+X679689Y156179D03*
+X677122Y142424D03*
+X676102Y128469D03*
+X676642Y114486D03*
+X678737Y100651D03*
+X682358Y87135D03*
+X687463Y74107D03*
+X693986Y61728D03*
+X701847Y50152D03*
+X710949Y39524D03*
+X721177Y29975D03*
+X732405Y21625D03*
+X744493Y14576D03*
+X757291Y8918D03*
+X770639Y4720D03*
+X784372Y2035D03*
+X798318Y895D03*
+X812304Y1316D03*
+X826157Y3291D03*
+X839703Y6797D03*
+X852775Y11789D03*
+X865210Y18206D03*
+X876852Y25968D03*
+X887558Y34978D03*
+X897195Y45124D03*
+X905641Y56280D03*
+X912793Y68307D03*
+X918560Y81056D03*
+X922873Y94367D03*
+X925676Y108077D03*
+X926935Y122013D03*
+
+X602773Y650000D03*
+X601821Y663957D03*
+X598982Y677655D03*
+X594309Y690841D03*
+X587889Y703270D03*
+X579841Y714712D03*
+X570313Y724955D03*
+X559483Y733809D03*
+X547550Y741111D03*
+X534737Y746724D03*
+X521280Y750545D03*
+X507428Y752504D03*
+X493439Y752563D03*
+X479572Y750722D03*
+X466083Y747015D03*
+X453222Y741510D03*
+X441228Y734310D03*
+X430323Y725547D03*
+X420709Y715385D03*
+X412565Y704012D03*
+X406040Y691637D03*
+X401256Y678491D03*
+X398301Y664818D03*
+X397231Y650870D03*
+X398065Y636905D03*
+X400788Y623184D03*
+X405348Y609959D03*
+X411663Y597476D03*
+X419614Y585966D03*
+X429055Y575643D03*
+X439810Y566697D03*
+X451680Y559295D03*
+X464446Y553573D03*
+X477870Y549638D03*
+X491705Y547563D03*
+X505693Y547385D03*
+X519575Y549109D03*
+X533095Y552702D03*
+X546002Y558098D03*
+X558056Y565196D03*
+X569035Y573866D03*
+X578734Y583946D03*
+X586975Y595251D03*
+X593605Y607569D03*
+X598500Y620674D03*
+X601570Y634322D03*
+X602758Y648261D03*
+
+X500000Y650000D03*
+X500000Y664000D03*
+X500000Y678000D03*
+X500000Y692000D03*
+X500000Y706000D03*
+X494599Y714366D03*
+X480883Y711699D03*
+X468062Y706144D03*
+X456736Y697962D03*
+X447434Y687536D03*
+X440591Y675353D03*
+X436529Y661984D03*
+X435437Y648054D03*
+X437366Y634216D03*
+X442226Y621115D03*
+X449789Y609367D03*
+X459702Y599520D03*
+X471501Y592035D03*
+X484633Y587262D03*
+X498484Y585425D03*
+X512407Y586610D03*
+X525748Y590761D03*
+X537885Y597685D03*
+X548249Y607056D03*
+X556356Y618437D03*
+X561825Y631294D03*
+X551844Y636823D03*
+X538276Y640271D03*
+X524707Y643720D03*
+X511139Y647169D03*
M02*
diff --git a/tests/expects/dxf_save_mousebites.txt b/tests/expects/dxf_save_mousebites.txt
index e82825a..4a64514 100644
--- a/tests/expects/dxf_save_mousebites.txt
+++ b/tests/expects/dxf_save_mousebites.txt
@@ -7,24 +7,578 @@ T01C0.500
G90
M71
T01
-X1000Y9000
-X1000Y8000
-X1000Y7000
-X1000Y6000
-X1000Y5000
-X1000Y4000
-X1000Y3000
-X1000Y2000
-X1000Y1000
-
-X5000Y9000
-X5000Y8000
-X5000Y7000
-X5000Y6000
-X5000Y5000
-X5000Y4000
-X5000Y3000
-X5000Y2000
-X5000Y1000
+X80000Y85000
+X80000Y83600
+X80000Y82200
+X80000Y80800
+X80000Y79400
+X80000Y78000
+X80000Y76600
+X80000Y75200
+X80000Y73800
+X80000Y72400
+X80000Y71000
+X80000Y69600
+X80000Y68200
+X80000Y66800
+X80000Y65400
+X80000Y64000
+X80000Y62600
+X80000Y61200
+X80000Y59800
+X80000Y58400
+X80000Y57000
+X80000Y55600
+X80000Y54200
+X80000Y52800
+X80000Y51400
+X80000Y50000
+X80000Y48600
+X80000Y47200
+X80000Y45800
+X80000Y44400
+X80000Y43000
+X80000Y41600
+X80000Y40200
+X80000Y38800
+X80000Y37400
+X80000Y36000
+
+X90000Y85000
+X90000Y83600
+X90000Y82200
+X90000Y80800
+X90000Y79400
+X90000Y78000
+X90000Y76600
+X90000Y75200
+X90000Y73800
+X90000Y72400
+X90000Y71000
+X90000Y69600
+X90000Y68200
+X90000Y66800
+X90000Y65400
+X90000Y64000
+X90000Y62600
+X90000Y61200
+X90000Y59800
+X90000Y58400
+X90000Y57000
+X90000Y55600
+X90000Y54200
+X90000Y52800
+X90000Y51400
+X90000Y50000
+X90000Y48600
+X90000Y47200
+X90000Y45800
+X90000Y44400
+X90000Y43000
+X90000Y41600
+X90000Y40200
+X90000Y38800
+X90000Y37400
+X90000Y36000
+
+X20000Y32939
+X21400Y32939
+X22800Y32939
+X24200Y32939
+X25600Y32939
+X27000Y32939
+X28400Y32939
+X29800Y32939
+X31200Y32939
+X32583Y32922
+X32583Y31522
+X32583Y30122
+X32583Y28722
+X32583Y27322
+X32583Y25922
+X32583Y24522
+X32583Y23122
+X32583Y21722
+X32583Y20322
+X32583Y18922
+
+X40000Y0
+X38600Y0
+X37200Y0
+X35800Y0
+X34400Y0
+X33000Y0
+X31600Y0
+X30200Y0
+X28800Y0
+X27400Y0
+X26000Y0
+X24600Y0
+X23200Y0
+X21800Y0
+X20400Y0
+X19000Y0
+X17600Y0
+X16200Y0
+X14800Y0
+X13400Y0
+X12000Y0
+X10600Y0
+X9201Y32
+X7818Y241
+X6477Y641
+X5206Y1224
+X4028Y1979
+X2967Y2891
+X2044Y3942
+X1276Y5111
+X680Y6376
+X265Y7712
+X41Y9093
+X0Y10492
+X0Y11892
+X0Y13292
+X0Y14692
+X0Y16092
+X0Y17492
+X0Y18892
+X0Y20292
+X0Y21692
+X0Y23092
+X0Y24492
+X0Y25892
+X0Y27292
+X0Y28692
+X0Y30092
+X0Y31492
+X0Y32892
+X0Y34292
+X0Y35692
+X0Y37092
+X0Y38492
+X0Y39892
+X83Y41288
+X360Y42660
+X826Y43979
+X1471Y45220
+X2282Y46359
+X3245Y47374
+X4340Y48244
+X5546Y48953
+X6839Y49487
+X8194Y49836
+X9584Y49991
+X10984Y50000
+X12384Y50000
+X13784Y50000
+X15184Y50000
+X16584Y50000
+X17984Y50000
+X19384Y50000
+X20784Y50000
+X22184Y50000
+X23584Y50000
+X24984Y50000
+X26384Y50000
+X27784Y50000
+X29184Y50000
+X30584Y50000
+X31984Y50000
+X33384Y50000
+X34784Y50000
+X36184Y50000
+X37584Y50000
+X38984Y50000
+X40384Y49993
+X41775Y49841
+X43131Y49497
+X44425Y48968
+X45633Y48262
+X46731Y47395
+X47697Y46384
+X48513Y45247
+X49162Y44008
+X49631Y42690
+X49912Y41320
+X50000Y39924
+X50000Y38524
+X50000Y37124
+X50000Y35724
+X50000Y34324
+X50000Y32924
+X50000Y31524
+X50000Y30124
+X50000Y28724
+X50000Y27324
+X50000Y25924
+X50000Y24524
+X50000Y23124
+X50000Y21724
+X50000Y20324
+X50000Y18924
+X50000Y17524
+X50000Y16124
+X50000Y14724
+X50000Y13324
+X50000Y11924
+X50000Y10524
+X49962Y9125
+X49742Y7743
+X49332Y6406
+X48739Y5139
+X47975Y3967
+X47055Y2913
+X45997Y1998
+X44822Y1239
+X43553Y652
+X42213Y248
+X40831Y35
+
+X74270Y75039
+X74270Y73639
+X74270Y72239
+X74270Y70839
+X74270Y69439
+X74270Y68039
+X74270Y66639
+X74270Y65239
+X74270Y63839
+X74270Y62439
+X74270Y61039
+X74270Y59639
+X74270Y58239
+X74270Y56839
+X74270Y55439
+X74270Y54039
+X74270Y52639
+X74270Y51239
+X74270Y49839
+X74270Y48439
+X74270Y47039
+X74270Y45639
+X74238Y44240
+X74029Y42857
+X73629Y41517
+X73046Y40245
+X72291Y39067
+X71380Y38007
+X70329Y37083
+X69159Y36316
+X67894Y35719
+X66558Y35305
+X65177Y35081
+X63778Y35039
+X62378Y35039
+X60978Y35039
+X59578Y35039
+X58178Y35039
+X56778Y35039
+X55378Y35039
+X53978Y35039
+X52578Y35039
+X51178Y35039
+X49778Y35039
+X48378Y35039
+X46978Y35039
+X45578Y35039
+X44178Y35039
+X42778Y35039
+X41378Y35039
+X39978Y35039
+X38578Y35039
+X37178Y35039
+X35778Y35039
+X34378Y35039
+X32982Y35123
+X31611Y35400
+X30292Y35865
+X29050Y36510
+X27911Y37322
+X26896Y38285
+X26026Y39380
+X25317Y40586
+X24783Y41879
+X24435Y43233
+X24279Y44624
+X24270Y46023
+X24270Y47423
+X24270Y48823
+X24270Y50223
+X24270Y51623
+X24270Y53023
+X24270Y54423
+X24270Y55823
+X24270Y57223
+X24270Y58623
+X24270Y60023
+X24270Y61423
+X24270Y62823
+X24270Y64223
+X24270Y65623
+X24270Y67023
+X24270Y68423
+X24270Y69823
+X24270Y71223
+X24270Y72623
+X24270Y74023
+X24278Y75423
+X24429Y76814
+X24773Y78170
+X25303Y79465
+X26008Y80673
+X26875Y81771
+X27887Y82737
+X29023Y83552
+X30262Y84201
+X31580Y84671
+X32950Y84952
+X34347Y85039
+X35747Y85039
+X37147Y85039
+X38547Y85039
+X39947Y85039
+X41347Y85039
+X42747Y85039
+X44147Y85039
+X45547Y85039
+X46947Y85039
+X48347Y85039
+X49747Y85039
+X51147Y85039
+X52547Y85039
+X53947Y85039
+X55347Y85039
+X56747Y85039
+X58147Y85039
+X59547Y85039
+X60947Y85039
+X62347Y85039
+X63747Y85039
+X65145Y85001
+X66527Y84781
+X67864Y84371
+X69131Y83778
+X70303Y83015
+X71357Y82095
+X72272Y81037
+X73031Y79862
+X73618Y78592
+X74022Y77253
+X74236Y75870
+
+X38204Y42206
+X36804Y42206
+X35404Y42206
+X34004Y42206
+X32604Y42206
+X31204Y42206
+X29804Y42206
+X28404Y42206
+X27004Y42206
+X25604Y42206
+X24204Y42206
+X22804Y42206
+X21404Y42206
+X20004Y42206
+X18604Y42206
+X17204Y42206
+X15804Y42206
+X14404Y42206
+X13451Y41759
+X13451Y40359
+X13451Y38959
+X13451Y37559
+X13451Y36159
+X13451Y34759
+X13451Y33359
+X13451Y31959
+X13451Y30559
+X13451Y29159
+X13451Y27759
+X13451Y26359
+X13451Y24959
+X13451Y23559
+X13451Y22159
+X13451Y20759
+X13451Y19359
+X13451Y17959
+X13451Y16559
+X13451Y15159
+X13451Y13759
+X14688Y13596
+X16088Y13596
+X17488Y13596
+X18888Y13596
+X20288Y13596
+X21688Y13596
+X23088Y13596
+X24488Y13596
+X25888Y13596
+X27288Y13596
+X28688Y13596
+X30088Y13596
+X31488Y13596
+X32888Y13596
+X34288Y13596
+X35688Y13596
+X37088Y13596
+X38204Y13881
+X38204Y15281
+X38204Y16681
+X38204Y18081
+X38204Y19481
+X38204Y20881
+X38204Y22281
+X38204Y23681
+X38204Y25081
+X38204Y26481
+X38204Y27881
+X38204Y29281
+X38204Y30681
+X38204Y32081
+X38204Y33481
+X38204Y34881
+X38204Y36281
+X38204Y37681
+X38204Y39081
+X38204Y40481
+X38204Y41881
+
+X92701Y12632
+X92623Y14029
+X92390Y15408
+X92004Y16754
+X91472Y18048
+X90798Y19274
+X89992Y20418
+X89064Y21465
+X88025Y22402
+X86888Y23218
+X85667Y23902
+X84378Y24446
+X83036Y24842
+X81659Y25087
+X80262Y25177
+X78865Y25111
+X77483Y24890
+X76134Y24516
+X74836Y23995
+X73604Y23332
+X72453Y22536
+X71398Y21617
+X70452Y20586
+X69626Y19456
+X68932Y18241
+X68377Y16956
+X67969Y15618
+X67712Y14242
+X67610Y12847
+X67664Y11449
+X67874Y10065
+X68236Y8714
+X68746Y7411
+X69399Y6173
+X70185Y5015
+X71095Y3952
+X72118Y2997
+X73241Y2162
+X74449Y1458
+X75729Y892
+X77064Y472
+X78437Y203
+X79832Y90
+X81230Y132
+X82616Y329
+X83970Y680
+X85278Y1179
+X86521Y1821
+X87685Y2597
+X88756Y3498
+X89719Y4512
+X90564Y5628
+X91279Y6831
+X91856Y8106
+X92287Y9437
+X92568Y10808
+X92693Y12201
+
+X60277Y65000
+X60182Y66396
+X59898Y67765
+X59431Y69084
+X58789Y70327
+X57984Y71471
+X57031Y72495
+X55948Y73381
+X54755Y74111
+X53474Y74672
+X52128Y75055
+X50743Y75250
+X49344Y75256
+X47957Y75072
+X46608Y74701
+X45322Y74151
+X44123Y73431
+X43032Y72555
+X42071Y71539
+X41256Y70401
+X40604Y69164
+X40126Y67849
+X39830Y66482
+X39723Y65087
+X39807Y63691
+X40079Y62318
+X40535Y60996
+X41166Y59748
+X41961Y58597
+X42905Y57564
+X43981Y56670
+X45168Y55929
+X46445Y55357
+X47787Y54964
+X49170Y54756
+X50569Y54739
+X51958Y54911
+X53310Y55270
+X54600Y55810
+X55806Y56520
+X56903Y57387
+X57873Y58395
+X58698Y59525
+X59360Y60757
+X59850Y62067
+X60157Y63432
+X60276Y64826
+
+X50000Y65000
+X50000Y66400
+X50000Y67800
+X50000Y69200
+X50000Y70600
+X49460Y71437
+X48088Y71170
+X46806Y70614
+X45674Y69796
+X44743Y68754
+X44059Y67535
+X43653Y66198
+X43544Y64805
+X43737Y63422
+X44223Y62112
+X44979Y60937
+X45970Y59952
+X47150Y59203
+X48463Y58726
+X49848Y58543
+X51241Y58661
+X52575Y59076
+X53789Y59768
+X54825Y60706
+X55636Y61844
+X56182Y63129
+X55184Y63682
+X53828Y64027
+X52471Y64372
+X51114Y64717
M30
diff --git a/tests/expects/dxf_to_inch.gtl b/tests/expects/dxf_to_inch.gtl
index aa862bf..f838214 100644
--- a/tests/expects/dxf_to_inch.gtl
+++ b/tests/expects/dxf_to_inch.gtl
@@ -6,36 +6,88 @@ G75*
%LPD*%
D10*
G01*
-X35433Y0D02*
+X314961Y334646D02*
G75*
G01*
-X3937Y0D01*
+X314961Y137795D01*
+G01*
+X354331Y334646D02*
+G75*
+G01*
+X354331Y137795D01*
+G01*
+X78740Y129681D02*
+G75*
+G01*
+X128278Y129681D01*
+G01*
+X128278Y70253D01*
+G01*
+X157480Y0D02*
+G75*
+G01*
+X39370Y0D01*
G02*
-X0Y3937I0J3937D01*
+X0Y39370I0J39370D01*
G01*
-X0Y35433D01*
+X0Y157480D01*
G02*
-X3937Y39370I3937J0D01*
+X39370Y196850I39370J0D01*
G01*
-X35433Y39370D01*
+X157480Y196850D01*
G02*
-X39370Y35433I0J-3937D01*
+X196850Y157480I0J-39370D01*
G01*
-X39370Y3937D01*
+X196850Y39370D01*
G02*
-X35433Y0I-3937J0D01*
+X157480Y0I-39370J0D01*
G01*
-X3610Y29570D02*
+X292403Y295431D02*
G75*
+G01*
+X292403Y177320D01*
G02*
-X1573Y28756I-1181J0D01*
+X253033Y137950I-39370J0D01*
G01*
-X2429Y29570D01*
+X134923Y137950D01*
+G02*
+X95553Y177320I0J39370D01*
G01*
-X3610Y29570D01*
+X95553Y295431D01*
+G02*
+X134923Y334801I39370J0D01*
+G01*
+X253033Y334801D01*
+G02*
+X292403Y295431I0J-39370D01*
G01*
-X3610Y19685D02*
+X150409Y166166D02*
+G75*
+G01*
+X52957Y166166D01*
+G01*
+X52957Y53528D01*
+G01*
+X150409Y53528D01*
+G01*
+X150409Y166166D01*
+G01*
+X364964Y49731D02*
+G75*
+G03*
+X364964Y49731I-49395J0D01*
+G01*
+X237312Y255906D02*
G75*
G03*
-X3610Y19685I-1181J0D01*
+X237312Y255906I-40462J0D01*
+G01*
+X196850Y255906D02*
+G75*
+G01*
+X196850Y281336D01*
+G03*
+X221497Y249641I0J-25430D01*
+G01*
+X196850Y255906D01*
M02*
diff --git a/tests/test_dxf.py b/tests/test_dxf.py
index 31589da..3d4d28e 100644
--- a/tests/test_dxf.py
+++ b/tests/test_dxf.py
@@ -19,7 +19,6 @@ class TestExcellon(unittest.TestCase):
cls.OUTPREFIX = 'dxf_'
cls.METRIC_FILE = os.path.join(cls.INDIR, 'ref_dxf_metric.dxf')
cls.INCH_FILE = os.path.join(cls.INDIR, 'ref_dxf_inch.dxf')
- cls.MOUSEBITES_FILE = os.path.join(cls.INDIR, 'ref_dxf_mousebites.dxf')
try:
os.mkdir(cls.OUTDIR)
except FileExistsError:
@@ -36,6 +35,7 @@ class TestExcellon(unittest.TestCase):
outfile = os.path.join(self.OUTDIR, self.OUTPREFIX + 'save_line.gtl')
dxf = gerberex.read(self.METRIC_FILE)
dxf.draw_mode = dxf.DM_LINE
+ dxf.width = 0.2
dxf.write(outfile)
self._checkResult(outfile)
@@ -46,23 +46,41 @@ class TestExcellon(unittest.TestCase):
dxf.write(outfile)
self._checkResult(outfile)
+ def test_save_fill_simple(self):
+ outfile = os.path.join(self.OUTDIR, self.OUTPREFIX + 'save_fill_simple.gtl')
+ dxf = gerberex.read(self.METRIC_FILE)
+ dxf.draw_mode = dxf.DM_FILL
+ dxf.fill_mode = dxf.FM_SIMPLE
+ dxf.write(outfile)
+ self._checkResult(outfile)
+
def test_save_mousebites(self):
outfile = os.path.join(self.OUTDIR, self.OUTPREFIX + 'save_mousebites.gtl')
- dxf = gerberex.read(self.MOUSEBITES_FILE)
+ dxf = gerberex.read(self.METRIC_FILE)
dxf.draw_mode = dxf.DM_MOUSE_BITES
dxf.width = 0.5
- dxf.pitch = 1
+ dxf.pitch = 1.4
dxf.write(outfile)
self._checkResult(outfile)
def test_save_excellon(self):
outfile = os.path.join(
+ self.OUTDIR, self.OUTPREFIX + 'save_line.txt')
+ dxf = gerberex.read(self.METRIC_FILE)
+ dxf.draw_mode = dxf.DM_LINE
+ dxf.format = (3,3)
+ dxf.width = 0.2
+ dxf.write(outfile, filetype=dxf.FT_EXCELLON)
+ self._checkResult(outfile)
+
+ def test_save_excellon_mousebites(self):
+ outfile = os.path.join(
self.OUTDIR, self.OUTPREFIX + 'save_mousebites.txt')
- dxf = gerberex.read(self.MOUSEBITES_FILE)
+ dxf = gerberex.read(self.METRIC_FILE)
dxf.draw_mode = dxf.DM_MOUSE_BITES
- dxf.format = (3,3)
+ dxf.format = (3, 3)
dxf.width = 0.5
- dxf.pitch = 1
+ dxf.pitch = 1.4
dxf.write(outfile, filetype=dxf.FT_EXCELLON)
self._checkResult(outfile)