Files
OpenNest/OpenNest.Tests/Splitting/TestData/split_test.dxf
AJ Isaacs 6880dee489 fix(splitter): preserve disconnected strips and trim cuts around cutouts
Splits that cross an interior cutout previously merged physically
disconnected strips into one drawing and drew cut lines through the hole.
The region boundary now spans full feature-edge extents (trimmed against
cutout polygons) and line entities are Liang-Barsky clipped, so multi-split
edges work. Arcs are properly clipped at region boundaries via iterative
split-at-intersection so circles that straddle a split contribute to both
sides. AssemblePieces groups a region's entities into connected closed
loops and nests holes by bbox-pre-check + vertex-in-polygon containment,
so one region can emit multiple drawings when a cutout fully spans it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 22:46:47 -04:00

2555 lines
14 KiB
Plaintext

0
SECTION
2
HEADER
9
$ACADVER
1
AC1018
9
$ACADMAINTVER
70
2
9
$DWGCODEPAGE
3
ANSI_1252
9
$INSBASE
10
0.0
20
0.0
30
0.0
9
$EXTMIN
10
19.91850545569161
20
5.515998377183137
30
-0.0000000349181948
9
$EXTMAX
10
274.9408108934591
20
60.52360502754011
30
0.0000000814935747
9
$LIMMIN
10
0.0
20
0.0
9
$LIMMAX
10
12.0
20
9.0
9
$ORTHOMODE
70
0
9
$REGENMODE
70
1
9
$FILLMODE
70
1
9
$QTEXTMODE
70
0
9
$MIRRTEXT
70
0
9
$LTSCALE
40
1.0
9
$ATTMODE
70
1
9
$TEXTSIZE
40
0.2
9
$TRACEWID
40
0.05
9
$TEXTSTYLE
7
Standard
9
$CLAYER
8
0
9
$CELTYPE
6
ByLayer
9
$CECOLOR
62
256
9
$CELTSCALE
40
1.0
9
$DISPSILH
70
0
9
$DIMSCALE
40
1.0
9
$DIMASZ
40
0.18
9
$DIMEXO
40
0.0625
9
$DIMDLI
40
0.38
9
$DIMRND
40
0.0
9
$DIMDLE
40
0.0
9
$DIMEXE
40
0.18
9
$DIMTP
40
0.0
9
$DIMTM
40
0.0
9
$DIMTXT
40
0.18
9
$DIMCEN
40
0.09
9
$DIMTSZ
40
0.0
9
$DIMTOL
70
0
9
$DIMLIM
70
0
9
$DIMTIH
70
1
9
$DIMTOH
70
1
9
$DIMSE1
70
0
9
$DIMSE2
70
0
9
$DIMTAD
70
0
9
$DIMZIN
70
0
9
$DIMBLK
1
9
$DIMASO
70
1
9
$DIMSHO
70
1
9
$DIMPOST
1
9
$DIMAPOST
1
9
$DIMALT
70
0
9
$DIMALTD
70
2
9
$DIMALTF
40
25.4
9
$DIMLFAC
40
1.0
9
$DIMTOFL
70
0
9
$DIMTVP
40
0.0
9
$DIMTIX
70
0
9
$DIMSOXD
70
0
9
$DIMSAH
70
0
9
$DIMBLK1
1
9
$DIMBLK2
1
9
$DIMSTYLE
2
Standard
9
$DIMCLRD
70
0
9
$DIMCLRE
70
0
9
$DIMCLRT
70
0
9
$DIMTFAC
40
1.0
9
$DIMGAP
40
0.09
9
$DIMJUST
70
0
9
$DIMSD1
70
0
9
$DIMSD2
70
0
9
$DIMTOLJ
70
1
9
$DIMTZIN
70
0
9
$DIMALTZ
70
0
9
$DIMALTTZ
70
0
9
$DIMUPT
70
0
9
$DIMDEC
70
4
9
$DIMTDEC
70
4
9
$DIMALTU
70
2
9
$DIMALTTD
70
2
9
$DIMTXSTY
7
Standard
9
$DIMAUNIT
70
0
9
$DIMADEC
70
0
9
$DIMALTRND
40
0.0
9
$DIMAZIN
70
0
9
$DIMDSEP
70
46
9
$DIMATFIT
70
3
9
$DIMFRAC
70
0
9
$DIMLDRBLK
1
9
$DIMLUNIT
70
2
9
$DIMLWD
70
-2
9
$DIMLWE
70
-2
9
$DIMTMOVE
70
0
9
$LUNITS
70
2
9
$LUPREC
70
4
9
$SKETCHINC
40
0.1
9
$FILLETRAD
40
0.0
9
$AUNITS
70
0
9
$AUPREC
70
0
9
$MENU
1
.
9
$ELEVATION
40
0.0
9
$PELEVATION
40
0.0
9
$THICKNESS
40
0.0
9
$LIMCHECK
70
0
9
$CHAMFERA
40
0.0
9
$CHAMFERB
40
0.0
9
$CHAMFERC
40
0.0
9
$CHAMFERD
40
0.0
9
$SKPOLY
70
0
9
$TDCREATE
40
2461141.845430382
9
$TDUCREATE
40
2461142.012097049
9
$TDUPDATE
40
2461141.879244201
9
$TDUUPDATE
40
2461142.045910868
9
$TDINDWG
40
0.0024387384
9
$TDUSRTIMER
40
0.0024382986
9
$USRTIMER
70
1
9
$ANGBASE
50
0.0
9
$ANGDIR
70
0
9
$PDMODE
70
0
9
$PDSIZE
40
0.0
9
$PLINEWID
40
0.0
9
$SPLFRAME
70
0
9
$SPLINETYPE
70
6
9
$SPLINESEGS
70
8
9
$HANDSEED
5
A2
9
$SURFTAB1
70
6
9
$SURFTAB2
70
6
9
$SURFTYPE
70
6
9
$SURFU
70
6
9
$SURFV
70
6
9
$UCSBASE
2
9
$UCSNAME
2
9
$UCSORG
10
0.0
20
0.0
30
0.0
9
$UCSXDIR
10
1.0
20
0.0
30
0.0
9
$UCSYDIR
10
0.0
20
1.0
30
0.0
9
$UCSORTHOREF
2
9
$UCSORTHOVIEW
70
0
9
$UCSORGTOP
10
0.0
20
0.0
30
0.0
9
$UCSORGBOTTOM
10
0.0
20
0.0
30
0.0
9
$UCSORGLEFT
10
0.0
20
0.0
30
0.0
9
$UCSORGRIGHT
10
0.0
20
0.0
30
0.0
9
$UCSORGFRONT
10
0.0
20
0.0
30
0.0
9
$UCSORGBACK
10
0.0
20
0.0
30
0.0
9
$PUCSBASE
2
9
$PUCSNAME
2
9
$PUCSORG
10
0.0
20
0.0
30
0.0
9
$PUCSXDIR
10
1.0
20
0.0
30
0.0
9
$PUCSYDIR
10
0.0
20
1.0
30
0.0
9
$PUCSORTHOREF
2
9
$PUCSORTHOVIEW
70
0
9
$PUCSORGTOP
10
0.0
20
0.0
30
0.0
9
$PUCSORGBOTTOM
10
0.0
20
0.0
30
0.0
9
$PUCSORGLEFT
10
0.0
20
0.0
30
0.0
9
$PUCSORGRIGHT
10
0.0
20
0.0
30
0.0
9
$PUCSORGFRONT
10
0.0
20
0.0
30
0.0
9
$PUCSORGBACK
10
0.0
20
0.0
30
0.0
9
$USERI1
70
0
9
$USERI2
70
0
9
$USERI3
70
0
9
$USERI4
70
0
9
$USERI5
70
0
9
$USERR1
40
0.0
9
$USERR2
40
0.0
9
$USERR3
40
0.0
9
$USERR4
40
0.0
9
$USERR5
40
0.0
9
$WORLDVIEW
70
1
9
$SHADEDGE
70
3
9
$SHADEDIF
70
70
9
$TILEMODE
70
1
9
$MAXACTVP
70
64
9
$PINSBASE
10
0.0
20
0.0
30
0.0
9
$PLIMCHECK
70
0
9
$PEXTMIN
10
0.0
20
0.0
30
0.0
9
$PEXTMAX
10
0.0
20
0.0
30
0.0
9
$PLIMMIN
10
0.0
20
0.0
9
$PLIMMAX
10
12.0
20
9.0
9
$UNITMODE
70
0
9
$VISRETAIN
70
1
9
$PLINEGEN
70
0
9
$PSLTSCALE
70
1
9
$TREEDEPTH
70
3020
9
$CMLSTYLE
2
Standard
9
$CMLJUST
70
0
9
$CMLSCALE
40
1.0
9
$PROXYGRAPHICS
70
1
9
$MEASUREMENT
70
0
9
$CELWEIGHT
370
-1
9
$ENDCAPS
280
0
9
$JOINSTYLE
280
0
9
$LWDISPLAY
290
0
9
$INSUNITS
70
1
9
$HYPERLINKBASE
1
9
$STYLESHEET
1
9
$XEDIT
290
1
9
$CEPSNTYPE
380
0
9
$PSTYLEMODE
290
1
9
$FINGERPRINTGUID
2
{FDEAD576-A652-11D2-9A35-0060089B3A3F}
9
$VERSIONGUID
2
{43BEA035-DE0A-47E5-AE2D-CFCAFBC579EF}
9
$EXTNAMES
290
1
9
$PSVPSCALE
40
0.0
9
$OLESTARTUP
290
0
9
$SORTENTS
280
127
9
$INDEXCTL
280
0
9
$HIDETEXT
280
1
9
$XCLIPFRAME
290
0
9
$HALOGAP
280
0
9
$OBSCOLOR
70
257
9
$OBSLTYPE
280
0
9
$INTERSECTIONDISPLAY
280
0
9
$INTERSECTIONCOLOR
70
257
9
$DIMASSOC
280
2
9
$PROJECTNAME
1
0
ENDSEC
0
SECTION
2
CLASSES
0
CLASS
1
ACDBDICTIONARYWDFLT
2
AcDbDictionaryWithDefault
3
ObjectDBX Classes
90
0
91
1
280
0
281
0
0
CLASS
1
DICTIONARYVAR
2
AcDbDictionaryVar
3
ObjectDBX Classes
90
0
91
2
280
0
281
0
0
ENDSEC
0
SECTION
2
TABLES
0
TABLE
2
VPORT
5
8
330
0
100
AcDbSymbolTable
70
2
0
VPORT
5
A1
330
8
100
AcDbSymbolTableRecord
100
AcDbViewportTableRecord
2
*Active
70
0
10
0.0
20
0.0
11
1.0
21
1.0
12
147.4296581745753
22
33.01980170236163
13
0.0
23
0.0
14
0.5
24
0.5
15
0.5
25
0.5
16
0.0
26
0.0
36
1.0
17
0.0
27
0.0
37
0.0
40
121.7516279380305
41
2.099662162162162
42
50.0
43
0.0
44
0.0
50
0.0
51
0.0
71
0
72
1000
73
1
74
3
75
0
76
0
77
0
78
0
281
0
65
1
110
0.0
120
0.0
130
0.0
111
1.0
121
0.0
131
0.0
112
0.0
122
1.0
132
0.0
79
0
146
0.0
0
ENDTAB
0
TABLE
2
LTYPE
5
5
330
0
100
AcDbSymbolTable
70
1
0
LTYPE
5
14
330
5
100
AcDbSymbolTableRecord
100
AcDbLinetypeTableRecord
2
ByBlock
70
0
3
72
65
73
0
40
0.0
0
LTYPE
5
15
330
5
100
AcDbSymbolTableRecord
100
AcDbLinetypeTableRecord
2
ByLayer
70
0
3
72
65
73
0
40
0.0
0
LTYPE
5
16
330
5
100
AcDbSymbolTableRecord
100
AcDbLinetypeTableRecord
2
Continuous
70
0
3
Solid line
72
65
73
0
40
0.0
0
ENDTAB
0
TABLE
2
LAYER
5
2
330
0
100
AcDbSymbolTable
70
1
0
LAYER
5
10
330
2
100
AcDbSymbolTableRecord
100
AcDbLayerTableRecord
2
0
70
0
62
7
6
Continuous
370
-3
390
F
0
ENDTAB
0
TABLE
2
STYLE
5
3
330
0
100
AcDbSymbolTable
70
1
0
STYLE
5
11
330
3
100
AcDbSymbolTableRecord
100
AcDbTextStyleTableRecord
2
Standard
70
0
40
0.0
41
1.0
50
0.0
71
0
42
0.2
3
txt
4
0
ENDTAB
0
TABLE
2
VIEW
5
6
330
0
100
AcDbSymbolTable
70
0
0
ENDTAB
0
TABLE
2
UCS
5
7
330
0
100
AcDbSymbolTable
70
0
0
ENDTAB
0
TABLE
2
APPID
5
9
330
0
100
AcDbSymbolTable
70
1
0
APPID
5
12
330
9
100
AcDbSymbolTableRecord
100
AcDbRegAppTableRecord
2
ACAD
70
0
0
ENDTAB
0
TABLE
2
DIMSTYLE
5
A
330
0
100
AcDbSymbolTable
70
1
100
AcDbDimStyleTable
71
0
0
DIMSTYLE
105
27
330
A
100
AcDbSymbolTableRecord
100
AcDbDimStyleTableRecord
2
Standard
70
0
340
11
0
ENDTAB
0
TABLE
2
BLOCK_RECORD
5
1
330
0
100
AcDbSymbolTable
70
1
0
BLOCK_RECORD
5
1F
330
1
100
AcDbSymbolTableRecord
100
AcDbBlockTableRecord
2
*Model_Space
340
22
0
BLOCK_RECORD
5
58
330
1
100
AcDbSymbolTableRecord
100
AcDbBlockTableRecord
2
*Paper_Space
340
59
0
BLOCK_RECORD
5
5D
330
1
100
AcDbSymbolTableRecord
100
AcDbBlockTableRecord
2
*Paper_Space0
340
5E
0
ENDTAB
0
ENDSEC
0
SECTION
2
BLOCKS
0
BLOCK
5
20
330
1F
100
AcDbEntity
8
0
100
AcDbBlockBegin
2
*Model_Space
70
0
10
0.0
20
0.0
30
0.0
3
*Model_Space
1
0
ENDBLK
5
21
330
1F
100
AcDbEntity
8
0
100
AcDbBlockEnd
0
BLOCK
5
5A
330
58
100
AcDbEntity
67
1
8
0
100
AcDbBlockBegin
2
*Paper_Space
70
0
10
0.0
20
0.0
30
0.0
3
*Paper_Space
1
0
ENDBLK
5
5B
330
58
100
AcDbEntity
67
1
8
0
100
AcDbBlockEnd
0
BLOCK
5
5F
330
5D
100
AcDbEntity
8
0
100
AcDbBlockBegin
2
*Paper_Space0
70
0
10
0.0
20
0.0
30
0.0
3
*Paper_Space0
1
0
ENDBLK
5
60
330
5D
100
AcDbEntity
8
0
100
AcDbBlockEnd
0
ENDSEC
0
SECTION
2
ENTITIES
0
LINE
5
89
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
19.92402932605608
20
5.519910847131079
30
0.0
11
19.92402932605608
21
60.51991084713108
31
0.0
0
LINE
5
8A
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
19.92402932605608
20
60.51991084713108
30
0.0
11
274.9240293260561
21
60.51991084713108
31
0.0
0
LINE
5
8B
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
19.92402932605608
20
5.519910847131079
30
0.0
11
274.924029326056
21
5.519910847131079
31
0.0
0
LINE
5
8C
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
274.9240293260561
20
60.51991084713108
30
0.0
11
274.924029326056
21
5.519910847131079
31
0.0
0
LINE
5
8D
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
100.1372327616525
20
50.51991084713108
30
0.0
11
264.9240293260561
21
50.51991084713108
31
0.0
0
LINE
5
8F
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
100.1372327616525
20
15.51991084713107
30
0.0
11
264.924029326056
21
15.51991084713108
31
0.0
0
LINE
5
90
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
264.9240293260561
20
50.51991084713108
30
0.0
11
264.924029326056
21
15.51991084713108
31
0.0
0
CIRCLE
5
98
330
1F
100
AcDbEntity
8
0
100
AcDbCircle
10
78.92402932605609
20
33.01991084713108
30
0.0
40
17.5
0
ARC
5
9A
330
1F
100
AcDbEntity
8
0
100
AcDbCircle
10
78.92402932605609
20
33.01991084713108
30
0.0
40
27.5
100
AcDbArc
50
320.4788036413579
51
39.52119635864218
0
ARC
5
9B
330
1F
100
AcDbEntity
8
0
100
AcDbCircle
10
78.92402932605609
20
33.01991084713108
30
0.0
40
27.5
100
AcDbArc
50
140.4788036413578
51
219.5211963586422
0
LINE
5
9C
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
57.71082589045966
20
15.51991084713107
30
0.0
11
29.92402932605608
21
15.51991084713108
31
0.0
0
LINE
5
9D
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
57.71082589045966
20
50.51991084713108
30
0.0
11
29.92402932605609
21
50.51991084713108
31
0.0
0
LINE
5
9E
330
1F
100
AcDbEntity
8
0
100
AcDbLine
10
29.92402932605608
20
15.51991084713108
30
0.0
11
29.92402932605608
21
50.51991084713109
31
0.0
0
ENDSEC
0
SECTION
2
OBJECTS
0
DICTIONARY
5
C
330
0
100
AcDbDictionary
281
1
3
ACAD_COLOR
350
73
3
ACAD_GROUP
350
D
3
ACAD_LAYOUT
350
1A
3
ACAD_MATERIAL
350
72
3
ACAD_MLINESTYLE
350
17
3
ACAD_PLOTSETTINGS
350
19
3
ACAD_PLOTSTYLENAME
350
E
3
AcDbVariableDictionary
350
66
0
DICTIONARY
5
73
102
{ACAD_REACTORS
330
C
102
}
330
C
100
AcDbDictionary
281
1
0
DICTIONARY
5
D
102
{ACAD_REACTORS
330
C
102
}
330
C
100
AcDbDictionary
281
1
0
DICTIONARY
5
1A
102
{ACAD_REACTORS
330
C
102
}
330
C
100
AcDbDictionary
281
1
3
Layout1
350
59
3
Layout2
350
5E
3
Model
350
22
0
DICTIONARY
5
72
102
{ACAD_REACTORS
330
C
102
}
330
C
100
AcDbDictionary
281
1
0
DICTIONARY
5
17
102
{ACAD_REACTORS
330
C
102
}
330
C
100
AcDbDictionary
281
1
3
Standard
350
18
0
DICTIONARY
5
19
102
{ACAD_REACTORS
330
C
102
}
330
C
100
AcDbDictionary
281
1
0
ACDBDICTIONARYWDFLT
5
E
102
{ACAD_REACTORS
330
C
102
}
330
C
100
AcDbDictionary
281
1
3
Normal
350
F
100
AcDbDictionaryWithDefault
340
F
0
DICTIONARY
5
66
102
{ACAD_REACTORS
330
C
102
}
330
C
100
AcDbDictionary
281
1
3
DIMASSOC
350
67
3
HIDETEXT
350
6B
0
LAYOUT
5
59
102
{ACAD_REACTORS
330
1A
102
}
330
1A
100
AcDbPlotSettings
1
2
None
4
6
40
0.0
41
0.0
42
0.0
43
0.0
44
0.0
45
0.0
46
0.0
47
0.0
48
0.0
49
0.0
140
0.0
141
0.0
142
1.0
143
1.0
70
688
72
0
73
0
74
5
7
75
16
147
1.0
76
0
77
2
78
300
148
0.0
149
0.0
100
AcDbLayout
1
Layout1
70
1
71
1
10
0.0
20
0.0
11
12.0
21
9.0
12
0.0
22
0.0
32
0.0
14
0.0
24
0.0
34
0.0
15
0.0
25
0.0
35
0.0
146
0.0
13
0.0
23
0.0
33
0.0
16
1.0
26
0.0
36
0.0
17
0.0
27
1.0
37
0.0
76
0
330
58
0
LAYOUT
5
5E
102
{ACAD_REACTORS
330
1A
102
}
330
1A
100
AcDbPlotSettings
1
2
None
4
6
40
0.0
41
0.0
42
0.0
43
0.0
44
0.0
45
0.0
46
0.0
47
0.0
48
0.0
49
0.0
140
0.0
141
0.0
142
1.0
143
1.0
70
688
72
0
73
0
74
5
7
75
16
147
1.0
76
0
77
2
78
300
148
0.0
149
0.0
100
AcDbLayout
1
Layout2
70
1
71
2
10
0.0
20
0.0
11
12.0
21
9.0
12
0.0
22
0.0
32
0.0
14
0.0
24
0.0
34
0.0
15
0.0
25
0.0
35
0.0
146
0.0
13
0.0
23
0.0
33
0.0
16
1.0
26
0.0
36
0.0
17
0.0
27
1.0
37
0.0
76
0
330
5D
0
LAYOUT
5
22
102
{ACAD_REACTORS
330
1A
102
}
330
1A
100
AcDbPlotSettings
1
2
none_device
4
ANSI_A_(8.50_x_11.00_Inches)
6
40
6.349999904632567
41
19.04999923706055
42
6.350006103515625
43
19.04998779296875
44
215.8999938964844
45
279.3999938964844
46
0.0
47
0.0
48
0.0
49
0.0
140
0.0
141
0.0
142
1.0
143
2.584895464708373
70
11952
72
0
73
1
74
0
7
75
0
147
0.3868628397755418
76
0
77
2
78
300
148
0.0
149
0.0
100
AcDbLayout
1
Model
70
1
71
0
10
0.0
20
0.0
11
12.0
21
9.0
12
0.0
22
0.0
32
0.0
14
0.0
24
0.0
34
0.0
15
0.0
25
0.0
35
0.0
146
0.0
13
0.0
23
0.0
33
0.0
16
1.0
26
0.0
36
0.0
17
0.0
27
1.0
37
0.0
76
0
330
1F
0
MLINESTYLE
5
18
102
{ACAD_REACTORS
330
17
102
}
330
17
100
AcDbMlineStyle
2
STANDARD
70
0
3
62
256
51
90.0
52
90.0
71
2
49
0.5
62
256
6
BYLAYER
49
-0.5
62
256
6
BYLAYER
0
ACDBPLACEHOLDER
5
F
102
{ACAD_REACTORS
330
E
102
}
330
E
0
DICTIONARYVAR
5
67
102
{ACAD_REACTORS
330
66
102
}
330
66
100
DictionaryVariables
280
0
1
2
0
DICTIONARYVAR
5
6B
102
{ACAD_REACTORS
330
66
102
}
330
66
100
DictionaryVariables
280
0
1
1
0
ENDSEC
0
EOF