From ca23fbd9534ab3cba3fd7b032816766c1150ebf9 Mon Sep 17 00:00:00 2001 From: Hiroshi Murayama Date: Mon, 30 Dec 2019 17:51:48 +0900 Subject: fix bugs that fail judgement of path's containment --- README.md | 14 +- gerberex/dxf.py | 20 +- gerberex/dxf_path.py | 2 +- setup.py | 2 +- tests/data/ref_dxf_complex.dxf | 7500 +++++++++++++++++++++++++++++++ tests/expects/dxf_complex_fill.gtl | 729 +++ tests/expects/dxf_complex_fill_flip.gtl | 746 +++ tests/test_dxf.py | 22 + 8 files changed, 9021 insertions(+), 14 deletions(-) create mode 100644 tests/data/ref_dxf_complex.dxf create mode 100644 tests/expects/dxf_complex_fill.gtl create mode 100644 tests/expects/dxf_complex_fill_flip.gtl diff --git a/README.md b/README.md index 252de53..a95dc56 100644 --- a/README.md +++ b/README.md @@ -107,14 +107,14 @@ outline.write('outline.gml') ``` ### Drawing Mode -PCB tools extension provide three type of translation method that affects geometric finish. These method are specified a value for ```draw_mode``` attribute, ```DM_LINE```, ```DM_MOUSE_BITES```, or ```DM_FILL```.
+PCB tools extension provide three type of translation method that affects geometric finish. These method are specified a value for ```draw_mode``` attribute, as ```DM_LINE```, ```DM_MOUSE_BITES```, or ```DM_FILL```.
```DM_LINE``` and ```DM_MOUSE_BITES``` are used to translate to both of RX-274x and Excellon, however ```DM_FILL``` is used to translate to only RX-274x. ![Drawing Mode](https://raw.githubusercontent.com/wiki/opiopan/pcb-tools-extension/images/draw_mode.jpg) - **draw_mode = DM_LINE**
- All edge expressed as DXF line object, circle object, arc object and plyline objects are translated to line and arc applied a circular aperture in case of RX-274x. That circular aperture r radius is specified by ```width``` attribute. Default value of width is 0.
- In case of Excellon, DXF objects are translated to routing path command sequence. + All edge expressed as DXF line object, circle object, arc object and plyline objects are translated to line and arc applied a circular aperture in case of RX-274x. That circular aperture radius is specified by ```width``` attribute. Default value of width is 0.
+ In case of Excellon, DXF objects are translated to routing path command sequence.
This function is useful to generate outline data of pnanelized PCB boad. ```python @@ -149,8 +149,8 @@ PCB tools extension provide three type of translation method that affects geomet ``` - **draw_mode = DM_FILL**
- You can translate DXF closed shape such as circle to RX-274x polygon fill sequence.
- In order to fill closed shape, ```DM_FILL``` has to be set to ```draw_mode``` property. In this mode, All object except closed shapes listed below are ignored. + You can translate DXF closed shapes such as circle to RX-274x polygon fill sequence.
+ In order to fill closed shapes, ```DM_FILL``` has to be set to ```draw_mode``` property. In this mode, All object except closed shapes listed below are ignored. - circle - closed polyline @@ -158,7 +158,7 @@ PCB tools extension provide three type of translation method that affects geomet If a closed shape is completly included in other closed shape, The inner shape will be draw with reversed polality of container shape as above example image.
- I assume there are two typical usecase for this mode.
+ I assume there are two typical use cases for this mode.
One is to arrange logo design on silk layer. This is superior to other method generating raster image data since image data express as vector data.
The other one is generating gerber data represented cropped area of panelized PCB. By merging rectangle and PCB outline data, generate a file represented cropped area as below, and this kind of data is useful to make PCB image look good a little bit.
@@ -169,7 +169,7 @@ PCB tools extension provide three type of translation method that affects geomet ctx = gerberex.GerberComposition() - rectangle = gerberex.rectangle(width=100, height=100, units='metric') + rectangle = gerberex.rectangle(width=100, height=100, left=0, bottom=0, units='metric') rectangle.draw_mode = rectangle.DM_FILL ctx.merge(rectangle) diff --git a/gerberex/dxf.py b/gerberex/dxf.py index 95a3114..2341092 100644 --- a/gerberex/dxf.py +++ b/gerberex/dxf.py @@ -51,12 +51,13 @@ def _intersections_of_line_and_circle(start, end, center, radius, error_range): dr = sqrt(dx * dx + dy * dy) D = x1 * y2 - x2 * y1 + distance = abs(dy * x1 - dx * y1) / dr + D2 = D * D dr2 = dr * dr r2 = radius * radius delta = r2 * dr2 - D2 - e4 = error_range * error_range * error_range * error_range * 10 - if delta > - e4 and delta < e4: + if distance > radius - error_range and distance < radius + error_range: delta = 0 if delta < 0: return None @@ -198,7 +199,7 @@ class DxfLineStatement(DxfStatement): denominator = (self.end[0] - self.start[0]) * (point_to[1] - point_from[1]) - \ (self.end[1] - self.start[1]) * (point_to[0] - point_from[0]) de = error_range * error_range - if denominator > -de and denominator < de: + if denominator >= -de and denominator <= de: return [] from_dx = point_from[0] - self.start[0] from_dy = point_from[1] - self.start[1] @@ -356,16 +357,25 @@ class DxfArcStatement(DxfStatement): elif p2 is not None and is_equal_point(p2, self.start, error_range): p2 = None + def is_contained(angle, region, error): + if angle >= region[0] - error and angle <= region[1] + error: + return True + if angle < 0 and region[1] > 0: + angle = angle + 2 * pi + elif angle > 0 and region[0] < 0: + angle = angle - 2 * pi + return angle >= region[0] - error and angle <= region[1] + error + aerror = error_range * self.radius pts = [] if p1 is not None and p1_t >= 0 and not is_equal_point(p1, self.start, error_range): for region in self.angle_regions: - if p1_angle >= region[0] - aerror and p1_angle <= region[1] + aerror: + if is_contained(p1_angle, region, aerror): pts.append(p1) break if p2 is not None and p2_t >= 0 and not is_equal_point(p2, self.start, error_range): for region in self.angle_regions: - if p2_angle >= region[0] - aerror and p2_angle <= region[1] + aerror: + if is_contained(p2_angle, region, aerror): pts.append(p2) break diff --git a/gerberex/dxf_path.py b/gerberex/dxf_path.py index bb620ff..960b054 100644 --- a/gerberex/dxf_path.py +++ b/gerberex/dxf_path.py @@ -301,7 +301,7 @@ class DxfPath(object): def _judge_cross(self, from_pt, to_pt, index, error_range): standard = normalize_vec2d((to_pt[0] - from_pt[0], to_pt[1] - from_pt[1])) - normal = (standard[1], standard[0]) + normal = (standard[1], -standard[0]) def statements(): for i in range(index, len(self.statements)): yield self.statements[i] diff --git a/setup.py b/setup.py index bfe25c1..f621b80 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ def read(fname): METADATA = { 'name': 'pcb-tools-extension', - 'version': "0.9.2", + 'version': "0.9.3", 'author': 'Hiroshi Murayama ', 'author_email': "opiopan@gmail.com", 'description': ("Extension for pcb-tools package to panelize gerber files"), diff --git a/tests/data/ref_dxf_complex.dxf b/tests/data/ref_dxf_complex.dxf new file mode 100644 index 0000000..b9a89da --- /dev/null +++ b/tests/data/ref_dxf_complex.dxf @@ -0,0 +1,7500 @@ +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 +LWPOLYLINE +5 +100 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +62.450000000000003 +20 +62.034999999999997 +10 +62.450000000000003 +20 +63.335000000000001 +42 +0.99999999999999989 +10 +61.25 +20 +63.335000000000001 +10 +61.25 +20 +62.034999999999997 +42 +0.99999999999999989 +0 +LWPOLYLINE +5 +101 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +82.450000000000017 +20 +62.034999999999997 +42 +-0.99999999999999989 +10 +81.25 +20 +62.034999999999997 +10 +81.250000000000014 +20 +63.335000000000001 +42 +-0.99999999999999989 +10 +82.449999999999989 +20 +63.335000000000001 +0 +LWPOLYLINE +5 +102 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +72.950000000000003 +20 +63.335000000000001 +42 +-0.99999999999999989 +10 +74.150000000000006 +20 +63.335000000000001 +10 +74.150000000000006 +20 +62.034999999999997 +42 +-0.99999999999999989 +10 +72.950000000000003 +20 +62.034999999999997 +0 +CIRCLE +5 +103 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +65.450000000000003 +20 +62.685000000000002 +30 +0 +40 +0.59999999999999998 +0 +LWPOLYLINE +5 +104 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +14.150000000000002 +20 +62.034999999999997 +10 +14.150000000000002 +20 +63.335000000000001 +42 +0.99999999999999989 +10 +12.950000000000001 +20 +63.335000000000001 +10 +12.949999999999999 +20 +62.034999999999997 +42 +0.99999999999999989 +0 +LWPOLYLINE +5 +105 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +21.25 +20 +42.965000000000003 +10 +21.25 +20 +41.664999999999999 +42 +0.99999999999999989 +10 +22.450000000000003 +20 +41.664999999999999 +10 +22.450000000000003 +20 +42.965000000000003 +42 +0.99999999999999989 +0 +LWPOLYLINE +5 +106 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +34.149999999999999 +20 +41.664999999999999 +10 +34.149999999999999 +20 +42.965000000000003 +42 +0.99999999999999989 +10 +32.950000000000003 +20 +42.965000000000003 +10 +32.950000000000003 +20 +41.664999999999999 +42 +0.99999999999999989 +0 +LWPOLYLINE +5 +107 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +34.149999999999999 +20 +62.034999999999997 +10 +34.149999999999999 +20 +63.335000000000001 +42 +0.99999999999999989 +10 +32.950000000000003 +20 +63.335000000000001 +10 +32.950000000000003 +20 +62.034999999999997 +42 +0.99999999999999989 +0 +LWPOLYLINE +5 +108 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +62.450000000000003 +20 +41.664999999999999 +10 +62.450000000000003 +20 +42.965000000000003 +42 +0.99999999999999989 +10 +61.25 +20 +42.965000000000003 +10 +61.25 +20 +41.664999999999999 +42 +0.99999999999999989 +0 +LWPOLYLINE +5 +109 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +72.950000000000003 +20 +42.965000000000003 +10 +72.950000000000003 +20 +41.664999999999999 +42 +0.99999999999999989 +10 +74.150000000000006 +20 +41.664999999999999 +10 +74.150000000000006 +20 +42.965000000000003 +42 +0.99999999999999989 +0 +CIRCLE +5 +110 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +89.949999999999989 +20 +62.685000000000002 +30 +0 +40 +0.59999999999999998 +0 +LWPOLYLINE +5 +111 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +54.149999999999991 +20 +62.034999999999997 +42 +-0.99999999999999989 +10 +52.950000000000003 +20 +62.034999999999997 +10 +52.949999999999989 +20 +63.335000000000001 +42 +-0.99999999999999989 +10 +54.149999999999999 +20 +63.335000000000001 +0 +CIRCLE +5 +112 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +49.949999999999989 +20 +62.685000000000002 +30 +0 +40 +0.59999999999999998 +0 +ARC +5 +113 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +53.549999999999997 +20 +62.034999999999997 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +-180 +51 +0 +0 +LWPOLYLINE +5 +114 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +92.950000000000003 +20 +63.335000000000001 +42 +-0.99999999999999989 +10 +94.150000000000006 +20 +63.335000000000001 +10 +94.150000000000006 +20 +62.034999999999997 +42 +-0.99999999999999989 +10 +92.950000000000003 +20 +62.034999999999997 +0 +CIRCLE +5 +115 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +85.450000000000003 +20 +62.685000000000002 +30 +0 +40 +0.59999999999999998 +0 +LINE +5 +116 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +34.149999999999999 +20 +42.965000000000003 +30 +0 +11 +34.149999999999999 +21 +41.664999999999999 +31 +0 +0 +LINE +5 +117 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +74.150000000000006 +20 +42.965000000000003 +30 +0 +11 +74.150000000000006 +21 +41.664999999999999 +31 +0 +0 +LWPOLYLINE +5 +118 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +41.249999999999993 +20 +42.965000000000003 +10 +41.249999999999993 +20 +41.664999999999999 +42 +0.99999999999999989 +10 +42.449999999999989 +20 +41.664999999999999 +10 +42.449999999999989 +20 +42.965000000000003 +42 +0.99999999999999989 +0 +LINE +5 +119 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +41.249999999999993 +20 +41.664999999999999 +30 +0 +11 +41.249999999999993 +21 +42.965000000000003 +31 +0 +0 +LINE +5 +120 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +39.999999999999993 +20 +5 +30 +0 +11 +55.399999999999991 +21 +5 +31 +0 +0 +LWPOLYLINE +5 +121 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +22.450000000000003 +20 +62.034999999999997 +10 +22.450000000000003 +20 +63.335000000000001 +42 +0.99999999999999989 +10 +21.25 +20 +63.335000000000001 +10 +21.25 +20 +62.034999999999997 +42 +0.99999999999999989 +0 +ARC +5 +122 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +61.849999999999994 +20 +62.034999999999997 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +-180 +51 +0 +0 +ARC +5 +123 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +73.550000000000011 +20 +63.335000000000001 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +0 +51 +180 +0 +CIRCLE +5 +124 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +69.950000000000003 +20 +62.685000000000002 +30 +0 +40 +0.59999999999999998 +0 +ARC +5 +125 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +73.550000000000011 +20 +62.034999999999997 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +-180 +51 +0 +0 +LINE +5 +126 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +32.950000000000003 +20 +41.664999999999999 +30 +0 +11 +32.950000000000003 +21 +42.965000000000003 +31 +0 +0 +LINE +5 +127 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +22.450000000000003 +20 +42.965000000000003 +30 +0 +11 +22.450000000000003 +21 +41.664999999999999 +31 +0 +0 +LINE +5 +128 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +21.25 +20 +41.664999999999999 +30 +0 +11 +21.25 +21 +42.965000000000003 +31 +0 +0 +CIRCLE +5 +129 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +69.950000000000003 +20 +42.314999999999998 +30 +0 +40 +0.59999999999999998 +0 +CIRCLE +5 +130 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +65.450000000000003 +20 +42.314999999999998 +30 +0 +40 +0.59999999999999998 +0 +ARC +5 +131 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +61.849999999999994 +20 +42.965000000000003 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +0 +51 +180 +0 +ARC +5 +132 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +73.550000000000011 +20 +42.965000000000003 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +0 +51 +180 +0 +ARC +5 +133 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +73.550000000000011 +20 +41.664999999999999 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +-180 +51 +0 +0 +ARC +5 +134 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +61.849999999999994 +20 +41.664999999999999 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +-180 +51 +0 +0 +LWPOLYLINE +5 +135 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +54.149999999999991 +20 +41.664999999999999 +42 +-0.99999999999999989 +10 +52.950000000000003 +20 +41.664999999999999 +10 +52.950000000000003 +20 +42.965000000000003 +42 +-0.99999999999999989 +10 +54.149999999999991 +20 +42.965000000000003 +0 +CIRCLE +5 +136 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +49.949999999999989 +20 +42.314999999999998 +30 +0 +40 +0.59999999999999998 +0 +ARC +5 +137 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +53.549999999999997 +20 +42.965000000000003 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +0 +51 +180 +0 +ARC +5 +138 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +53.549999999999997 +20 +41.664999999999999 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +-180 +51 +0 +0 +ARC +5 +139 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +53.549999999999997 +20 +63.335000000000001 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +0 +51 +180 +0 +ARC +5 +140 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +93.550000000000011 +20 +63.335000000000001 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +0 +51 +180 +0 +LWPOLYLINE +5 +141 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +12.949999999999999 +20 +42.965000000000003 +42 +-0.99999999999999989 +10 +14.15 +20 +42.965000000000003 +10 +14.15 +20 +41.664999999999999 +42 +-0.99999999999999989 +10 +12.949999999999999 +20 +41.664999999999999 +0 +LWPOLYLINE +5 +142 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +2.4499999999999988 +20 +41.664999999999999 +42 +-0.99999999999999989 +10 +1.2499999999999978 +20 +41.664999999999999 +10 +1.2499999999999956 +20 +42.965000000000003 +42 +-0.99999999999999989 +10 +2.4500000000000011 +20 +42.965000000000003 +0 +LWPOLYLINE +5 +143 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +94.150000000000006 +20 +41.664999999999999 +42 +-0.99999999999999989 +10 +92.950000000000003 +20 +41.664999999999999 +10 +92.950000000000017 +20 +42.965000000000003 +42 +-0.99999999999999989 +10 +94.149999999999991 +20 +42.965000000000003 +0 +LWPOLYLINE +5 +144 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +42.449999999999989 +20 +62.034999999999997 +10 +42.449999999999989 +20 +63.335000000000001 +42 +0.99999999999999989 +10 +41.25 +20 +63.335000000000001 +10 +41.25 +20 +62.034999999999997 +42 +0.99999999999999989 +0 +LWPOLYLINE +5 +145 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +82.450000000000017 +20 +41.664999999999999 +42 +-0.99999999999999989 +10 +81.25 +20 +41.664999999999999 +10 +81.25 +20 +42.965000000000003 +42 +-0.99999999999999989 +10 +82.450000000000017 +20 +42.965000000000003 +0 +CIRCLE +5 +146 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +25.449999999999999 +20 +62.685000000000002 +30 +0 +40 +0.59999999999999998 +0 +ARC +5 +147 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +81.850000000000009 +20 +41.664999999999999 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +-180 +51 +0 +0 +CIRCLE +5 +148 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +89.949999999999989 +20 +42.314999999999998 +30 +0 +40 +0.59999999999999998 +0 +ARC +5 +149 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +93.550000000000011 +20 +41.664999999999999 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +-180 +51 +0 +0 +LINE +5 +150 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +-6.6613381477509392e-15 +20 +5 +30 +0 +11 +15.399999999999995 +21 +5 +31 +0 +0 +CIRCLE +5 +151 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +45.450000000000003 +20 +42.314999999999998 +30 +0 +40 +0.59999999999999998 +0 +CIRCLE +5 +152 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +45.450000000000003 +20 +62.685000000000002 +30 +0 +40 +0.59999999999999998 +0 +LINE +5 +153 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +42.449999999999989 +20 +42.965000000000003 +30 +0 +11 +42.449999999999989 +21 +41.664999999999999 +31 +0 +0 +LWPOLYLINE +5 +154 +100 +AcDbEntity +8 +0 +100 +AcDbPolyline +90 +4 +70 +1 +43 +0.0 +10 +1.25 +20 +63.335000000000001 +10 +1.25 +20 +62.034999999999997 +42 +0.99999999999999989 +10 +2.4500000000000002 +20 +62.034999999999997 +10 +2.4500000000000002 +20 +63.335000000000001 +42 +0.99999999999999989 +0 +LINE +5 +155 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +2.4500000000000002 +20 +63.335000000000001 +30 +0 +11 +2.4500000000000002 +21 +62.034999999999997 +31 +0 +0 +LINE +5 +156 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +1.25 +20 +62.034999999999997 +30 +0 +11 +1.25 +21 +63.335000000000001 +31 +0 +0 +LINE +5 +157 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +12.949999999999999 +20 +62.034999999999997 +30 +0 +11 +12.950000000000001 +21 +63.335000000000001 +31 +0 +0 +CIRCLE +5 +158 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +5.4500000000000002 +20 +62.685000000000002 +30 +0 +40 +0.59999999999999998 +0 +ARC +5 +159 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +13.550000000000001 +20 +42.965000000000003 +30 +0 +40 +0.60000000000000053 +100 +AcDbArc +50 +0 +51 +180 +0 +LINE +5 +160 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +14.15 +20 +42.965000000000003 +30 +0 +11 +14.15 +21 +41.664999999999999 +31 +0 +0 +LINE +5 +161 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +34.149999999999999 +20 +63.335000000000001 +30 +0 +11 +34.149999999999999 +21 +62.034999999999997 +31 +0 +0 +ARC +5 +162 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +1.8500000000000003 +20 +63.335000000000001 +30 +0 +40 +0.59999999999999998 +100 +AcDbArc +50 +0 +51 +180 +0 +LINE +5 +163 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +35.399999999999999 +20 +100 +30 +0 +11 +20 +21 +100 +31 +0 +0 +LINE +5 +164 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +15.4 +20 +100 +30 +0 +11 +0 +21 +100 +31 +0 +0 +LINE +5 +165 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +0 +20 +100 +30 +0 +11 +0 +21 +60 +31 +0 +0 +LINE +5 +166 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +0 +20 +45 +30 +0 +11 +-6.6613381477509392e-15 +21 +5 +31 +0 +0 +LINE +5 +167 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +19.999999999999993 +20 +5 +30 +0 +11 +35.399999999999999 +21 +5 +31 +0 +0 +LINE +5 +168 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +75.400000000000006 +20 +100 +30 +0 +11 +60 +21 +100 +31 +0 +0 +LINE +5 +169 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +95.399999999999991 +20 +100 +30 +0 +11 +80 +21 +100 +31 +0 +0 +LINE +5 +170 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +59.999999999999993 +20 +5 +30 +0 +11 +75.399999999999991 +21 +5 +31 +0 +0 +CIRCLE +5 +171 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +9.9499999999999993 +20 +62.685000000000002 +30 +0 +40 +0.59999999999999998 +0 +LINE +5 +172 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +79.999999999999986 +20 +5 +30 +0 +11 +95.399999999999991 +21 +5 +31 +0 +0 +ARC +5 +173 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +13.550000000000002 +20 +62.034999999999997 +30 +0 +40 +0.60000000000000275 +100 +AcDbArc +50 +-180 +51 +0 +0 +LINE +5 +174 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +95.399999999999991 +20 +5 +30 +0 +11 +95.399999999999991 +21 +45 +31 +0 +0 +LINE +5 +175 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +92.950000000000003 +20 +62.034999999999997 +30 +0 +11 +92.950000000000003 +21 +63.335000000000001 +31 +0 +0 +CIRCLE +5 +176 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +5.4499999999999993 +20 +42.314999999999998 +30 +0 +40 +0.59999999999999998 +0 +ARC +5 +177 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +1.8499999999999983 +20 +42.965000000000003 +30 +0 +40 +0.60000000000000275 +100 +AcDbArc +50 +0 +51 +180 +0 +ARC +5 +178 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +13.550000000000001 +20 +41.664999999999999 +30 +0 +40 +0.60000000000000053 +100 +AcDbArc +50 +-180 +51 +0 +0 +ARC +5 +179 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +1.8499999999999983 +20 +41.664999999999999 +30 +0 +40 +0.60000000000000053 +100 +AcDbArc +50 +-180 +51 +0 +0 +LINE +5 +180 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +22.450000000000003 +20 +63.335000000000001 +30 +0 +11 +22.450000000000003 +21 +62.034999999999997 +31 +0 +0 +LINE +5 +181 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +14.150000000000002 +20 +63.335000000000001 +30 +0 +11 +14.150000000000002 +21 +62.034999999999997 +31 +0 +0 +LINE +5 +182 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +72.950000000000003 +20 +41.664999999999999 +30 +0 +11 +72.950000000000003 +21 +42.965000000000003 +31 +0 +0 +CIRCLE +5 +183 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +29.950000000000003 +20 +62.685000000000002 +30 +0 +40 +0.59999999999999998 +0 +LINE +5 +184 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +61.25 +20 +41.664999999999999 +30 +0 +11 +61.25 +21 +42.965000000000003 +31 +0 +0 +LINE +5 +185 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +62.450000000000003 +20 +42.965000000000003 +30 +0 +11 +62.450000000000003 +21 +41.664999999999999 +31 +0 +0 +ARC +5 +186 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +41.849999999999994 +20 +42.965000000000003 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +0 +51 +180 +0 +ARC +5 +187 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +41.849999999999994 +20 +63.335000000000001 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +0 +51 +180 +0 +LINE +5 +188 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +54.149999999999991 +20 +42.965000000000003 +30 +0 +11 +54.149999999999991 +21 +41.664999999999999 +31 +0 +0 +LINE +5 +189 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +52.950000000000003 +20 +41.664999999999999 +30 +0 +11 +52.950000000000003 +21 +42.965000000000003 +31 +0 +0 +ARC +5 +190 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +21.850000000000001 +20 +63.335000000000001 +30 +0 +40 +0.60000000000000053 +100 +AcDbArc +50 +0 +51 +180 +0 +LINE +5 +191 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +21.25 +20 +62.034999999999997 +30 +0 +11 +21.25 +21 +63.335000000000001 +31 +0 +0 +LINE +5 +192 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +32.950000000000003 +20 +62.034999999999997 +30 +0 +11 +32.950000000000003 +21 +63.335000000000001 +31 +0 +0 +ARC +5 +193 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +81.850000000000009 +20 +42.965000000000003 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +0 +51 +180 +0 +ARC +5 +194 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +93.550000000000011 +20 +42.965000000000003 +30 +0 +40 +0.59999999999998721 +100 +AcDbArc +50 +0 +51 +180 +0 +ARC +5 +195 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +33.550000000000004 +20 +62.034999999999997 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +-180 +51 +0 +0 +ARC +5 +196 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +33.550000000000004 +20 +63.335000000000001 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +0 +51 +180 +0 +ARC +5 +197 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +21.850000000000001 +20 +62.034999999999997 +30 +0 +40 +0.60000000000000053 +100 +AcDbArc +50 +-180 +51 +0 +0 +CIRCLE +5 +198 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +85.450000000000003 +20 +42.314999999999998 +30 +0 +40 +0.59999999999999998 +0 +LINE +5 +199 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +92.950000000000003 +20 +41.664999999999999 +30 +0 +11 +92.950000000000003 +21 +42.965000000000003 +31 +0 +0 +LINE +5 +200 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +82.450000000000017 +20 +42.965000000000003 +30 +0 +11 +82.449999999999989 +21 +41.664999999999999 +31 +0 +0 +ARC +5 +201 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +41.849999999999994 +20 +62.034999999999997 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +-180 +51 +0 +0 +ARC +5 +202 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +41.849999999999994 +20 +41.664999999999999 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +-180 +51 +0 +0 +LINE +5 +203 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +55.399999999999991 +20 +100 +30 +0 +11 +39.999999999999993 +21 +100 +31 +0 +0 +LINE +5 +204 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +42.449999999999989 +20 +63.335000000000001 +30 +0 +11 +42.449999999999989 +21 +62.034999999999997 +31 +0 +0 +LINE +5 +205 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +41.25 +20 +62.034999999999997 +30 +0 +11 +41.25 +21 +63.335000000000001 +31 +0 +0 +ARC +5 +206 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +81.850000000000009 +20 +62.034999999999997 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +-180 +51 +0 +0 +LINE +5 +207 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +81.25 +20 +62.034999999999997 +30 +0 +11 +81.25 +21 +63.335000000000001 +31 +0 +0 +LINE +5 +208 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +12.949999999999999 +20 +41.664999999999999 +30 +0 +11 +12.949999999999999 +21 +42.965000000000003 +31 +0 +0 +LINE +5 +209 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +1.2499999999999978 +20 +41.664999999999999 +30 +0 +11 +1.2499999999999978 +21 +42.965000000000003 +31 +0 +0 +LINE +5 +210 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +2.4500000000000011 +20 +42.965000000000003 +30 +0 +11 +2.4499999999999988 +21 +41.664999999999999 +31 +0 +0 +ARC +5 +211 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +1.8500000000000003 +20 +62.034999999999997 +30 +0 +40 +0.60000000000000031 +100 +AcDbArc +50 +-180 +51 +0 +0 +ARC +5 +212 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +13.550000000000002 +20 +63.335000000000001 +30 +0 +40 +0.60000000000000053 +100 +AcDbArc +50 +0 +51 +180 +0 +LINE +5 +213 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +72.950000000000003 +20 +62.034999999999997 +30 +0 +11 +72.950000000000003 +21 +63.335000000000001 +31 +0 +0 +LINE +5 +214 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +62.450000000000003 +20 +63.335000000000001 +30 +0 +11 +62.450000000000003 +21 +62.034999999999997 +31 +0 +0 +LINE +5 +215 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +74.150000000000006 +20 +63.335000000000001 +30 +0 +11 +74.150000000000006 +21 +62.034999999999997 +31 +0 +0 +LINE +5 +216 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +61.25 +20 +62.034999999999997 +30 +0 +11 +61.25 +21 +63.335000000000001 +31 +0 +0 +LINE +5 +217 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +52.950000000000003 +20 +62.034999999999997 +30 +0 +11 +52.950000000000003 +21 +63.335000000000001 +31 +0 +0 +LINE +5 +218 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +54.149999999999999 +20 +63.335000000000001 +30 +0 +11 +54.149999999999999 +21 +62.034999999999997 +31 +0 +0 +ARC +5 +219 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +93.550000000000011 +20 +62.034999999999997 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +-180 +51 +0 +0 +LINE +5 +220 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +82.449999999999989 +20 +63.335000000000001 +30 +0 +11 +82.449999999999989 +21 +62.034999999999997 +31 +0 +0 +LINE +5 +221 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +94.149999999999991 +20 +42.965000000000003 +30 +0 +11 +94.149999999999991 +21 +41.664999999999999 +31 +0 +0 +LINE +5 +222 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +81.25 +20 +41.664999999999999 +30 +0 +11 +81.25 +21 +42.965000000000003 +31 +0 +0 +CIRCLE +5 +223 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +25.449999999999999 +20 +42.314999999999998 +30 +0 +40 +0.59999999999999998 +0 +CIRCLE +5 +224 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +29.950000000000003 +20 +42.314999999999998 +30 +0 +40 +0.59999999999999998 +0 +LINE +5 +225 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +94.150000000000006 +20 +63.335000000000001 +30 +0 +11 +94.150000000000006 +21 +62.034999999999997 +31 +0 +0 +ARC +5 +226 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +81.850000000000009 +20 +63.335000000000001 +30 +0 +40 +0.59999999999998721 +100 +AcDbArc +50 +0 +51 +180 +0 +ARC +5 +227 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +61.849999999999994 +20 +63.335000000000001 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +0 +51 +180 +0 +LINE +5 +228 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +95.399999999999991 +20 +60 +30 +0 +11 +95.399999999999991 +21 +100 +31 +0 +0 +CIRCLE +5 +229 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +9.9499999999999993 +20 +42.314999999999998 +30 +0 +40 +0.59999999999999998 +0 +ARC +5 +230 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +21.849999999999994 +20 +41.664999999999999 +30 +0 +40 +0.59999999999999609 +100 +AcDbArc +50 +-180 +51 +0 +0 +ARC +5 +231 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +33.549999999999997 +20 +41.664999999999999 +30 +0 +40 +0.60000000000000053 +100 +AcDbArc +50 +-180 +51 +0 +0 +ARC +5 +232 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +33.549999999999997 +20 +42.965000000000003 +30 +0 +40 +0.60000000000000053 +100 +AcDbArc +50 +0 +51 +180 +0 +ARC +5 +233 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +21.849999999999994 +20 +42.965000000000003 +30 +0 +40 +0.60000000000000497 +100 +AcDbArc +50 +0 +51 +180 +0 +LINE +5 +234 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +95.399999999999991 +20 +56 +30 +0 +11 +95.399999999999991 +21 +49 +31 +0 +0 +LINE +5 +235 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +0 +20 +56 +30 +0 +11 +0 +21 +49 +31 +0 +0 +LINE +5 +236 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +3.7000000000000002 +20 +58 +30 +0 +11 +3.7000000000000002 +21 +58 +31 +0 +0 +LINE +5 +237 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +11.699999999999999 +20 +58 +30 +0 +11 +11.699999999999999 +21 +58 +31 +0 +0 +LINE +5 +238 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +23.700000000000003 +20 +58 +30 +0 +11 +23.700000000000003 +21 +58 +31 +0 +0 +LINE +5 +239 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +31.699999999999999 +20 +58 +30 +0 +11 +31.699999999999999 +21 +58 +31 +0 +0 +LINE +5 +240 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +43.700000000000003 +20 +58 +30 +0 +11 +43.700000000000003 +21 +58 +31 +0 +0 +LINE +5 +241 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +51.700000000000003 +20 +58 +30 +0 +11 +51.700000000000003 +21 +58 +31 +0 +0 +LINE +5 +242 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +63.700000000000003 +20 +58 +30 +0 +11 +63.700000000000003 +21 +58 +31 +0 +0 +LINE +5 +243 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +71.700000000000003 +20 +58 +30 +0 +11 +71.700000000000003 +21 +58 +31 +0 +0 +LINE +5 +244 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +83.699999999999989 +20 +58 +30 +0 +11 +83.699999999999989 +21 +58 +31 +0 +0 +LINE +5 +245 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +91.699999999999989 +20 +58 +30 +0 +11 +91.699999999999989 +21 +58 +31 +0 +0 +LINE +5 +246 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +3.7000000000000002 +20 +47 +30 +0 +11 +3.7000000000000002 +21 +47 +31 +0 +0 +LINE +5 +247 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +11.699999999999999 +20 +46.999999999999993 +30 +0 +11 +11.699999999999999 +21 +46.999999999999993 +31 +0 +0 +LINE +5 +248 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +23.700000000000003 +20 +46.999999999999993 +30 +0 +11 +23.700000000000003 +21 +46.999999999999993 +31 +0 +0 +LINE +5 +249 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +31.699999999999999 +20 +46.999999999999993 +30 +0 +11 +31.699999999999999 +21 +46.999999999999993 +31 +0 +0 +LINE +5 +250 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +43.700000000000003 +20 +46.999999999999993 +30 +0 +11 +43.700000000000003 +21 +46.999999999999993 +31 +0 +0 +LINE +5 +251 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +51.700000000000003 +20 +46.999999999999993 +30 +0 +11 +51.700000000000003 +21 +46.999999999999993 +31 +0 +0 +LINE +5 +252 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +63.700000000000003 +20 +46.999999999999993 +30 +0 +11 +63.700000000000003 +21 +46.999999999999993 +31 +0 +0 +LINE +5 +253 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +71.700000000000003 +20 +46.999999999999993 +30 +0 +11 +71.700000000000003 +21 +46.999999999999993 +31 +0 +0 +LINE +5 +254 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +83.699999999999989 +20 +46.999999999999993 +30 +0 +11 +83.699999999999989 +21 +46.999999999999993 +31 +0 +0 +LINE +5 +255 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +91.699999999999989 +20 +47 +30 +0 +11 +91.699999999999989 +21 +47 +31 +0 +0 +LINE +5 +256 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +0 +20 +60 +30 +0 +11 +1.7000000000000002 +21 +60 +31 +0 +0 +LINE +5 +257 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +13.699999999999999 +20 +60 +30 +0 +11 +15.4 +21 +60 +31 +0 +0 +LINE +5 +258 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +20 +20 +60 +30 +0 +11 +21.699999999999999 +21 +60 +31 +0 +0 +LINE +5 +259 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +33.700000000000003 +20 +60 +30 +0 +11 +35.399999999999999 +21 +60 +31 +0 +0 +LINE +5 +260 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +39.999999999999993 +20 +60 +30 +0 +11 +41.700000000000003 +21 +60.000000000000007 +31 +0 +0 +LINE +5 +261 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +53.700000000000003 +20 +60 +30 +0 +11 +55.399999999999991 +21 +60 +31 +0 +0 +LINE +5 +262 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +60 +20 +60 +30 +0 +11 +61.700000000000003 +21 +60.000000000000007 +31 +0 +0 +LINE +5 +263 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +73.700000000000003 +20 +60 +30 +0 +11 +75.400000000000006 +21 +60 +31 +0 +0 +LINE +5 +264 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +80 +20 +60 +30 +0 +11 +81.700000000000003 +21 +59.999999999999993 +31 +0 +0 +LINE +5 +265 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +93.699999999999974 +20 +59.999999999999993 +30 +0 +11 +95.399999999999991 +21 +60 +31 +0 +0 +LINE +5 +266 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +95.399999999999991 +20 +56 +30 +0 +11 +93.699999999999974 +21 +56.000000000000007 +31 +0 +0 +LINE +5 +267 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +81.700000000000003 +20 +56.000000000000007 +30 +0 +11 +73.700000000000003 +21 +56 +31 +0 +0 +LINE +5 +268 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +61.700000000000003 +20 +55.999999999999986 +30 +0 +11 +53.700000000000003 +21 +56 +31 +0 +0 +LINE +5 +269 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +41.700000000000003 +20 +55.999999999999986 +30 +0 +11 +33.700000000000003 +21 +56 +31 +0 +0 +LINE +5 +270 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +21.699999999999999 +20 +56 +30 +0 +11 +13.699999999999999 +21 +56 +31 +0 +0 +LINE +5 +271 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +1.6999999999999997 +20 +56 +30 +0 +11 +0 +21 +56 +31 +0 +0 +LINE +5 +272 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +0 +20 +49 +30 +0 +11 +1.7000000000000055 +21 +49 +31 +0 +0 +LINE +5 +273 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +13.699999999999999 +20 +48.999999999999986 +30 +0 +11 +21.699999999999999 +21 +48.999999999999993 +31 +0 +0 +LINE +5 +274 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +33.700000000000003 +20 +48.999999999999993 +30 +0 +11 +41.700000000000003 +21 +48.999999999999993 +31 +0 +0 +LINE +5 +275 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +53.700000000000003 +20 +48.999999999999986 +30 +0 +11 +61.700000000000003 +21 +48.999999999999993 +31 +0 +0 +LINE +5 +276 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +73.700000000000003 +20 +48.999999999999986 +30 +0 +11 +81.700000000000017 +21 +48.999999999999993 +31 +0 +0 +LINE +5 +277 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +93.699999999999974 +20 +49.000000000000014 +30 +0 +11 +95.399999999999991 +21 +49 +31 +0 +0 +LINE +5 +278 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +95.399999999999991 +20 +45 +30 +0 +11 +93.699999999999974 +21 +45.000000000000007 +31 +0 +0 +LINE +5 +279 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +81.700000000000003 +20 +45.000000000000007 +30 +0 +11 +80 +21 +45 +31 +0 +0 +LINE +5 +280 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +75.400000000000006 +20 +45 +30 +0 +11 +73.700000000000017 +21 +45 +31 +0 +0 +LINE +5 +281 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +61.699999999999989 +20 +45 +30 +0 +11 +60 +21 +45 +31 +0 +0 +LINE +5 +282 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +55.399999999999991 +20 +45 +30 +0 +11 +53.70000000000001 +21 +45 +31 +0 +0 +LINE +5 +283 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +41.699999999999989 +20 +45 +30 +0 +11 +39.999999999999993 +21 +45 +31 +0 +0 +LINE +5 +284 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +35.399999999999999 +20 +45 +30 +0 +11 +33.700000000000003 +21 +45 +31 +0 +0 +LINE +5 +285 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +21.699999999999996 +20 +45 +30 +0 +11 +20 +21 +45 +31 +0 +0 +LINE +5 +286 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +15.4 +20 +45 +30 +0 +11 +13.700000000000003 +21 +45 +31 +0 +0 +LINE +5 +287 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +1.6999999999999948 +20 +45 +30 +0 +11 +0 +21 +45 +31 +0 +0 +LINE +5 +288 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +17.399999999999999 +20 +72 +30 +0 +11 +18 +21 +72 +31 +0 +0 +LINE +5 +289 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +18 +20 +87.999999999999986 +30 +0 +11 +17.399999999999999 +21 +87.999999999999986 +31 +0 +0 +LINE +5 +290 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +38 +20 +87.999999999999986 +30 +0 +11 +37.400000000000006 +21 +87.999999999999986 +31 +0 +0 +LINE +5 +291 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +37.400000000000006 +20 +72 +30 +0 +11 +38 +21 +72 +31 +0 +0 +LINE +5 +292 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +58 +20 +87.999999999999986 +30 +0 +11 +57.399999999999991 +21 +87.999999999999986 +31 +0 +0 +LINE +5 +293 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +57.399999999999991 +20 +72 +30 +0 +11 +58 +21 +72 +31 +0 +0 +LINE +5 +294 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +78 +20 +87.999999999999986 +30 +0 +11 +77.399999999999991 +21 +87.999999999999986 +31 +0 +0 +LINE +5 +295 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +77.399999999999991 +20 +72 +30 +0 +11 +78 +21 +72 +31 +0 +0 +LINE +5 +296 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +18 +20 +32.999999999999986 +30 +0 +11 +17.399999999999999 +21 +32.999999999999986 +31 +0 +0 +LINE +5 +297 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +38 +20 +32.999999999999986 +30 +0 +11 +37.400000000000006 +21 +32.999999999999986 +31 +0 +0 +LINE +5 +298 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +58 +20 +32.999999999999986 +30 +0 +11 +57.399999999999991 +21 +32.999999999999986 +31 +0 +0 +LINE +5 +299 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +78 +20 +32.999999999999986 +30 +0 +11 +77.399999999999991 +21 +32.999999999999986 +31 +0 +0 +LINE +5 +300 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +77.399999999999991 +20 +17 +30 +0 +11 +78 +21 +17 +31 +0 +0 +LINE +5 +301 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +57.399999999999991 +20 +17 +30 +0 +11 +58 +21 +17 +31 +0 +0 +LINE +5 +302 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +37.400000000000006 +20 +17 +30 +0 +11 +38 +21 +17 +31 +0 +0 +LINE +5 +303 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +17.399999999999999 +20 +17 +30 +0 +11 +18 +21 +17 +31 +0 +0 +LINE +5 +304 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +15.399999999999995 +20 +5 +30 +0 +11 +15.4 +21 +15.000000000000002 +31 +0 +0 +LINE +5 +305 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +15.4 +20 +34.999999999999993 +30 +0 +11 +15.4 +21 +45 +31 +0 +0 +LINE +5 +306 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +20 +20 +45 +30 +0 +11 +20 +21 +34.999999999999993 +31 +0 +0 +LINE +5 +307 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +19.999999999999996 +20 +15 +30 +0 +11 +19.999999999999993 +21 +5 +31 +0 +0 +LINE +5 +308 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +35.399999999999999 +20 +5 +30 +0 +11 +35.399999999999999 +21 +15.000000000000002 +31 +0 +0 +LINE +5 +309 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +35.399999999999999 +20 +34.999999999999993 +30 +0 +11 +35.399999999999999 +21 +45 +31 +0 +0 +LINE +5 +310 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +39.999999999999993 +20 +45 +30 +0 +11 +40 +21 +34.999999999999993 +31 +0 +0 +LINE +5 +311 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +40 +20 +15 +30 +0 +11 +39.999999999999993 +21 +5 +31 +0 +0 +LINE +5 +312 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +55.399999999999991 +20 +5 +30 +0 +11 +55.399999999999991 +21 +15.000000000000002 +31 +0 +0 +LINE +5 +313 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +55.399999999999991 +20 +34.999999999999993 +30 +0 +11 +55.399999999999991 +21 +45 +31 +0 +0 +LINE +5 +314 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +60 +20 +45 +30 +0 +11 +60 +21 +34.999999999999993 +31 +0 +0 +LINE +5 +315 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +60 +20 +15 +30 +0 +11 +59.999999999999993 +21 +5 +31 +0 +0 +LINE +5 +316 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +75.399999999999991 +20 +5 +30 +0 +11 +75.400000000000006 +21 +15.000000000000004 +31 +0 +0 +LINE +5 +317 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +75.399999999999991 +20 +34.999999999999993 +30 +0 +11 +75.400000000000006 +21 +45 +31 +0 +0 +LINE +5 +318 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +80 +20 +45 +30 +0 +11 +80 +21 +34.999999999999993 +31 +0 +0 +LINE +5 +319 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +80 +20 +15 +30 +0 +11 +79.999999999999986 +21 +5 +31 +0 +0 +LINE +5 +320 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +80 +20 +60 +30 +0 +11 +80 +21 +70 +31 +0 +0 +LINE +5 +321 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +79.999999999999986 +20 +89.999999999999986 +30 +0 +11 +80 +21 +100 +31 +0 +0 +LINE +5 +322 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +75.400000000000006 +20 +100 +30 +0 +11 +75.399999999999991 +21 +89.999999999999972 +31 +0 +0 +LINE +5 +323 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +75.399999999999991 +20 +70 +30 +0 +11 +75.400000000000006 +21 +60 +31 +0 +0 +LINE +5 +324 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +60 +20 +60 +30 +0 +11 +60.000000000000007 +21 +70 +31 +0 +0 +LINE +5 +325 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +59.999999999999993 +20 +89.999999999999986 +30 +0 +11 +60 +21 +100 +31 +0 +0 +LINE +5 +326 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +55.399999999999991 +20 +100 +30 +0 +11 +55.399999999999999 +21 +89.999999999999986 +31 +0 +0 +LINE +5 +327 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +55.399999999999984 +20 +70 +30 +0 +11 +55.399999999999991 +21 +60 +31 +0 +0 +LINE +5 +328 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +39.999999999999993 +20 +60 +30 +0 +11 +40 +21 +70 +31 +0 +0 +LINE +5 +329 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +39.999999999999993 +20 +89.999999999999986 +30 +0 +11 +39.999999999999993 +21 +100 +31 +0 +0 +LINE +5 +330 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +35.399999999999999 +20 +100 +30 +0 +11 +35.400000000000006 +21 +89.999999999999986 +31 +0 +0 +LINE +5 +331 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +35.399999999999999 +20 +70 +30 +0 +11 +35.399999999999999 +21 +60 +31 +0 +0 +LINE +5 +332 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +20 +20 +60 +30 +0 +11 +20.000000000000007 +21 +70 +31 +0 +0 +LINE +5 +333 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +20.000000000000004 +20 +89.999999999999986 +30 +0 +11 +20 +21 +100 +31 +0 +0 +LINE +5 +334 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +15.4 +20 +100 +30 +0 +11 +15.399999999999995 +21 +89.999999999999986 +31 +0 +0 +LINE +5 +335 +100 +AcDbEntity +8 +0 +100 +AcDbLine +10 +15.399999999999993 +20 +70 +30 +0 +11 +15.4 +21 +60 +31 +0 +0 +ARC +5 +336 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +17.399999999999988 +20 +89.999999999999986 +30 +0 +40 +1.9999999999999929 +100 +AcDbArc +50 +180 +51 +270.00000000000034 +0 +ARC +5 +337 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +18.000000000000011 +20 +89.999999999999986 +30 +0 +40 +1.9999999999999929 +100 +AcDbArc +50 +-90.000000000000313 +51 +0 +0 +ARC +5 +338 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +17.400000000000006 +20 +69.999999999999986 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +90.000000000000199 +51 +180 +0 +ARC +5 +339 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +17.999999999999996 +20 +69.999999999999986 +30 +0 +40 +2.0000000000000129 +100 +AcDbArc +50 +0 +51 +89.999999999999901 +0 +ARC +5 +340 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +37.399999999999999 +20 +89.999999999999986 +30 +0 +40 +1.9999999999999929 +100 +AcDbArc +50 +180 +51 +270.00000000000023 +0 +ARC +5 +341 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +38 +20 +89.999999999999986 +30 +0 +40 +1.9999999999999929 +100 +AcDbArc +50 +-90 +51 +0 +0 +ARC +5 +342 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +37.400000000000013 +20 +69.999999999999986 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +90.000000000000199 +51 +180 +0 +ARC +5 +343 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +37.999999999999986 +20 +69.999999999999986 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +0 +51 +89.999999999999588 +0 +ARC +5 +344 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +57.399999999999977 +20 +89.999999999999972 +30 +0 +40 +1.9999999999999751 +100 +AcDbArc +50 +180 +51 +270.0000000000004 +0 +ARC +5 +345 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +58.000000000000014 +20 +89.999999999999972 +30 +0 +40 +1.9999999999999751 +100 +AcDbArc +50 +-90.000000000000398 +51 +0 +0 +ARC +5 +346 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +57.400000000000006 +20 +69.999999999999986 +30 +0 +40 +2.0000000000000195 +100 +AcDbArc +50 +90.000000000000398 +51 +180 +0 +ARC +5 +347 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +57.999999999999986 +20 +69.999999999999986 +30 +0 +40 +2.0000000000000195 +100 +AcDbArc +50 +0 +51 +89.999999999999588 +0 +ARC +5 +348 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +77.399999999999977 +20 +89.999999999999986 +30 +0 +40 +1.9999999999999929 +100 +AcDbArc +50 +180 +51 +270.0000000000004 +0 +ARC +5 +349 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +78.000000000000014 +20 +89.999999999999972 +30 +0 +40 +1.9999999999999751 +100 +AcDbArc +50 +-90.000000000000398 +51 +0 +0 +ARC +5 +350 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +77.399999999999977 +20 +70.000000000000014 +30 +0 +40 +1.9999999999999929 +100 +AcDbArc +50 +89.999999999999588 +51 +180 +0 +ARC +5 +351 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +77.999999999999986 +20 +69.999999999999986 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +0 +51 +89.999999999999588 +0 +ARC +5 +352 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +1.69999999999999 +20 +57.999999999999986 +30 +0 +40 +2.0000000000000102 +100 +AcDbArc +50 +0 +51 +89.999999999999716 +0 +ARC +5 +353 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +13.700000000000008 +20 +57.999999999999986 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +90.000000000000256 +51 +180 +0 +ARC +5 +354 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +1.69999999999999 +20 +58.000000000000007 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +270.00000000000034 +51 +360 +0 +ARC +5 +355 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +13.700000000000008 +20 +58.000000000000007 +30 +0 +40 +2.0000000000000084 +100 +AcDbArc +50 +180 +51 +269.99999999999972 +0 +ARC +5 +356 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +21.699999999999985 +20 +57.999999999999986 +30 +0 +40 +2.0000000000000151 +100 +AcDbArc +50 +0 +51 +89.999999999999588 +0 +ARC +5 +357 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +21.699999999999985 +20 +58.000000000000007 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +270.0000000000004 +51 +360 +0 +ARC +5 +358 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +33.700000000000017 +20 +57.999999999999986 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +90.000000000000398 +51 +180 +0 +ARC +5 +359 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +33.700000000000017 +20 +58.000000000000007 +30 +0 +40 +2.0000000000000151 +100 +AcDbArc +50 +180 +51 +269.9999999999996 +0 +ARC +5 +360 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +41.699999999999982 +20 +57.999999999999986 +30 +0 +40 +2.0000000000000195 +100 +AcDbArc +50 +0 +51 +89.999999999999389 +0 +ARC +5 +361 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +41.699999999999982 +20 +58.000000000000007 +30 +0 +40 +2.0000000000000195 +100 +AcDbArc +50 +270.00000000000063 +51 +360 +0 +ARC +5 +362 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +53.700000000000017 +20 +57.999999999999979 +30 +0 +40 +2.0000000000000195 +100 +AcDbArc +50 +90.000000000000398 +51 +180 +0 +ARC +5 +363 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +53.700000000000017 +20 +58.000000000000014 +30 +0 +40 +2.0000000000000195 +100 +AcDbArc +50 +180 +51 +269.9999999999996 +0 +ARC +5 +364 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +61.699999999999982 +20 +57.999999999999986 +30 +0 +40 +2.0000000000000195 +100 +AcDbArc +50 +0 +51 +89.999999999999389 +0 +ARC +5 +365 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +61.699999999999982 +20 +58.000000000000007 +30 +0 +40 +2.0000000000000195 +100 +AcDbArc +50 +270.00000000000063 +51 +360 +0 +ARC +5 +366 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +73.700000000000017 +20 +57.999999999999979 +30 +0 +40 +2.0000000000000195 +100 +AcDbArc +50 +90.000000000000398 +51 +180 +0 +ARC +5 +367 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +73.700000000000017 +20 +58.000000000000014 +30 +0 +40 +2.0000000000000195 +100 +AcDbArc +50 +180 +51 +269.9999999999996 +0 +ARC +5 +368 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +81.700000000000017 +20 +58.000000000000014 +30 +0 +40 +1.9999999999999751 +100 +AcDbArc +50 +0 +51 +90.000000000000398 +0 +ARC +5 +369 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +81.700000000000017 +20 +57.999999999999979 +30 +0 +40 +1.9999999999999751 +100 +AcDbArc +50 +-90.000000000000398 +51 +0 +0 +ARC +5 +370 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +1.6999999999999953 +20 +47 +30 +0 +40 +2.0000000000000044 +100 +AcDbArc +50 +0 +51 +89.999999999999716 +0 +ARC +5 +371 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +1.7000000000000037 +20 +46.999999999999993 +30 +0 +40 +1.9999999999999929 +100 +AcDbArc +50 +-90.000000000000256 +51 +0 +0 +ARC +5 +372 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +13.700000000000003 +20 +46.999999999999986 +30 +0 +40 +2.0000000000000018 +100 +AcDbArc +50 +90.000000000000099 +51 +180 +0 +ARC +5 +373 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +13.699999999999996 +20 +46.999999999999993 +30 +0 +40 +1.9999999999999973 +100 +AcDbArc +50 +180 +51 +270.00000000000023 +0 +ARC +5 +374 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +21.699999999999989 +20 +46.999999999999986 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +0 +51 +89.999999999999702 +0 +ARC +5 +375 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +21.700000000000003 +20 +46.999999999999993 +30 +0 +40 +1.9999999999999929 +100 +AcDbArc +50 +-90.000000000000199 +51 +0 +0 +ARC +5 +376 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +33.70000000000001 +20 +46.999999999999986 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +90.000000000000199 +51 +180 +0 +ARC +5 +377 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +33.699999999999996 +20 +46.999999999999993 +30 +0 +40 +1.9999999999999973 +100 +AcDbArc +50 +180 +51 +270.00000000000023 +0 +ARC +5 +378 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +41.699999999999989 +20 +46.999999999999986 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +0 +51 +89.999999999999588 +0 +ARC +5 +379 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +41.70000000000001 +20 +46.999999999999993 +30 +0 +40 +1.9999999999999929 +100 +AcDbArc +50 +-90.000000000000611 +51 +0 +0 +ARC +5 +380 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +53.70000000000001 +20 +46.999999999999972 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +90.000000000000199 +51 +180 +0 +ARC +5 +381 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +53.700000000000003 +20 +47 +30 +0 +40 +2.0000000000000018 +100 +AcDbArc +50 +180 +51 +270.00000000000023 +0 +ARC +5 +382 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +61.699999999999989 +20 +46.999999999999986 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +0 +51 +89.999999999999588 +0 +ARC +5 +383 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +61.70000000000001 +20 +46.999999999999993 +30 +0 +40 +1.9999999999999929 +100 +AcDbArc +50 +-90.000000000000611 +51 +0 +0 +ARC +5 +384 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +73.700000000000017 +20 +46.999999999999972 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +90.000000000000398 +51 +180 +0 +ARC +5 +385 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +81.700000000000003 +20 +47 +30 +0 +40 +1.9999999999999929 +100 +AcDbArc +50 +0 +51 +89.999999999999588 +0 +ARC +5 +386 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +73.700000000000003 +20 +47 +30 +0 +40 +2.0000000000000018 +100 +AcDbArc +50 +180 +51 +270.0000000000004 +0 +ARC +5 +387 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +81.700000000000017 +20 +46.999999999999986 +30 +0 +40 +1.9999999999999751 +100 +AcDbArc +50 +-90.000000000000398 +51 +0 +0 +ARC +5 +388 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +93.699999999999989 +20 +47 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +90.000000000000398 +51 +180 +0 +ARC +5 +389 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +93.69999999999996 +20 +46.999999999999986 +30 +0 +40 +1.9999999999999751 +100 +AcDbArc +50 +180 +51 +270.0000000000004 +0 +ARC +5 +390 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +93.69999999999996 +20 +57.999999999999979 +30 +0 +40 +1.9999999999999751 +100 +AcDbArc +50 +180 +51 +270.0000000000004 +0 +ARC +5 +391 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +93.69999999999996 +20 +58.000000000000014 +30 +0 +40 +1.9999999999999751 +100 +AcDbArc +50 +89.999999999999588 +51 +180 +0 +ARC +5 +392 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +17.400000000000002 +20 +34.999999999999993 +30 +0 +40 +2.0000000000000018 +100 +AcDbArc +50 +180 +51 +269.99999999999989 +0 +ARC +5 +393 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +18 +20 +34.999999999999993 +30 +0 +40 +2.0000000000000018 +100 +AcDbArc +50 +-90 +51 +0 +0 +ARC +5 +394 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +17.399999999999999 +20 +15.000000000000002 +30 +0 +40 +1.9999999999999996 +100 +AcDbArc +50 +90 +51 +180 +0 +ARC +5 +395 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +18 +20 +15.000000000000004 +30 +0 +40 +1.9999999999999973 +100 +AcDbArc +50 +0 +51 +90 +0 +ARC +5 +396 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +37.400000000000006 +20 +34.999999999999993 +30 +0 +40 +2.0000000000000062 +100 +AcDbArc +50 +180 +51 +270 +0 +ARC +5 +397 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +37.999999999999993 +20 +34.999999999999993 +30 +0 +40 +2.0000000000000062 +100 +AcDbArc +50 +-89.999999999999801 +51 +0 +0 +ARC +5 +398 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +37.400000000000006 +20 +15 +30 +0 +40 +2.0000000000000018 +100 +AcDbArc +50 +90 +51 +180 +0 +ARC +5 +399 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +38 +20 +15 +30 +0 +40 +2.0000000000000018 +100 +AcDbArc +50 +0 +51 +90 +0 +ARC +5 +400 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +57.400000000000006 +20 +35.000000000000007 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +180 +51 +269.9999999999996 +0 +ARC +5 +401 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +57.999999999999986 +20 +35.000000000000007 +30 +0 +40 +2.0000000000000151 +100 +AcDbArc +50 +270.0000000000004 +51 +360 +0 +ARC +5 +402 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +57.400000000000006 +20 +14.999999999999993 +30 +0 +40 +2.0000000000000084 +100 +AcDbArc +50 +90.000000000000398 +51 +180 +0 +ARC +5 +403 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +57.999999999999986 +20 +14.999999999999991 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +0 +51 +89.999999999999588 +0 +ARC +5 +404 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +77.399999999999991 +20 +34.999999999999986 +30 +0 +40 +2.0000000000000018 +100 +AcDbArc +50 +180 +51 +270 +0 +ARC +5 +405 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +77.999999999999986 +20 +35.000000000000007 +30 +0 +40 +2.0000000000000151 +100 +AcDbArc +50 +270.0000000000004 +51 +360 +0 +ARC +5 +406 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +77.399999999999991 +20 +15.000000000000011 +30 +0 +40 +1.9999999999999907 +100 +AcDbArc +50 +90 +51 +180 +0 +ARC +5 +407 +100 +AcDbEntity +8 +0 +100 +AcDbCircle +10 +77.999999999999986 +20 +14.999999999999991 +30 +0 +40 +2.0000000000000107 +100 +AcDbArc +50 +0 +51 +89.999999999999588 +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_complex_fill.gtl b/tests/expects/dxf_complex_fill.gtl new file mode 100644 index 0000000..e667789 --- /dev/null +++ b/tests/expects/dxf_complex_fill.gtl @@ -0,0 +1,729 @@ +%MOMM*% +%FSLAX34Y34*% +%IPPOS*% +%ADD10C,0*% +G75* +%LPD*% +D10* +G36* +G01* +X800000Y150000D02* +G75* +G03* +X780000Y170000I-20000J0D01* +G01* +X774000Y170000D01* +G03* +X754000Y150000I0J-20000D01* +G01* +X754000Y50000D01* +G01* +X600000Y50000D01* +G01* +X600000Y150000D01* +G03* +X580000Y170000I-20000J0D01* +G01* +X574000Y170000D01* +G03* +X554000Y150000I0J-20000D01* +G01* +X554000Y50000D01* +G01* +X400000Y50000D01* +G01* +X400000Y150000D01* +G03* +X380000Y170000I-20000J0D01* +G01* +X374000Y170000D01* +G03* +X354000Y150000I0J-20000D01* +G01* +X354000Y50000D01* +G01* +X200000Y50000D01* +G01* +X200000Y150000D01* +G03* +X180000Y170000I-20000J0D01* +G01* +X174000Y170000D01* +G03* +X154000Y150000I0J-20000D01* +G01* +X154000Y50000D01* +G01* +X0Y50000D01* +G01* +X0Y450000D01* +G01* +X17000Y450000D01* +G03* +X37000Y470000I0J20000D01* +G03* +X17000Y490000I-20000J0D01* +G01* +X0Y490000D01* +G01* +X0Y560000D01* +G01* +X17000Y560000D01* +G03* +X37000Y580000I0J20000D01* +G03* +X17000Y600000I-20000J0D01* +G01* +X0Y600000D01* +G01* +X0Y1000000D01* +G01* +X154000Y1000000D01* +G01* +X154000Y900000D01* +G03* +X174000Y880000I20000J0D01* +G01* +X180000Y880000D01* +G03* +X200000Y900000I0J20000D01* +G01* +X200000Y1000000D01* +G01* +X354000Y1000000D01* +G01* +X354000Y900000D01* +G03* +X374000Y880000I20000J0D01* +G01* +X380000Y880000D01* +G03* +X400000Y900000I0J20000D01* +G01* +X400000Y1000000D01* +G01* +X554000Y1000000D01* +G01* +X554000Y900000D01* +G03* +X574000Y880000I20000J0D01* +G01* +X580000Y880000D01* +G03* +X600000Y900000I0J20000D01* +G01* +X600000Y1000000D01* +G01* +X754000Y1000000D01* +G01* +X754000Y900000D01* +G03* +X774000Y880000I20000J0D01* +G01* +X780000Y880000D01* +G03* +X800000Y900000I0J20000D01* +G01* +X800000Y1000000D01* +G01* +X954000Y1000000D01* +G01* +X954000Y600000D01* +G01* +X937000Y600000D01* +G03* +X917000Y580000I0J-20000D01* +G03* +X937000Y560000I20000J0D01* +G01* +X954000Y560000D01* +G01* +X954000Y490000D01* +G01* +X937000Y490000D01* +G03* +X917000Y470000I0J-20000D01* +G03* +X937000Y450000I20000J0D01* +G01* +X954000Y450000D01* +G01* +X954000Y50000D01* +G01* +X800000Y50000D01* +G01* +X800000Y150000D01* +G37* +%LPC*% +G36* +G01* +X624500Y620350D02* +G75* +G01* +X624500Y633350D01* +G03* +X612500Y633350I-6000J0D01* +G01* +X612500Y620350D01* +G03* +X624500Y620350I6000J0D01* +G01* +X824500Y620350D02* +G75* +G02* +X812500Y620350I-6000J0D01* +G01* +X812500Y633350D01* +G02* +X824500Y633350I6000J0D01* +G01* +X824500Y620350D01* +G01* +X729500Y633350D02* +G75* +G02* +X741500Y633350I6000J0D01* +G01* +X741500Y620350D01* +G02* +X729500Y620350I-6000J0D01* +G01* +X729500Y633350D01* +G01* +X141500Y620350D02* +G75* +G01* +X141500Y633350D01* +G03* +X129500Y633350I-6000J0D01* +G01* +X129500Y620350D01* +G03* +X141500Y620350I6000J0D01* +G01* +X212500Y429650D02* +G75* +G01* +X212500Y416650D01* +G03* +X224500Y416650I6000J0D01* +G01* +X224500Y429650D01* +G03* +X212500Y429650I-6000J0D01* +G01* +X341500Y416650D02* +G75* +G01* +X341500Y429650D01* +G03* +X329500Y429650I-6000J0D01* +G01* +X329500Y416650D01* +G03* +X341500Y416650I6000J0D01* +G01* +X341500Y620350D02* +G75* +G01* +X341500Y633350D01* +G03* +X329500Y633350I-6000J0D01* +G01* +X329500Y620350D01* +G03* +X341500Y620350I6000J0D01* +G01* +X624500Y416650D02* +G75* +G01* +X624500Y429650D01* +G03* +X612500Y429650I-6000J0D01* +G01* +X612500Y416650D01* +G03* +X624500Y416650I6000J0D01* +G01* +X729500Y429650D02* +G75* +G01* +X729500Y416650D01* +G03* +X741500Y416650I6000J0D01* +G01* +X741500Y429650D01* +G03* +X729500Y429650I-6000J0D01* +G01* +X541500Y620350D02* +G75* +G02* +X529500Y620350I-6000J0D01* +G01* +X529500Y633350D01* +G02* +X541500Y633350I6000J0D01* +G01* +X541500Y620350D01* +G01* +X929500Y633350D02* +G75* +G02* +X941500Y633350I6000J0D01* +G01* +X941500Y620350D01* +G02* +X929500Y620350I-6000J0D01* +G01* +X929500Y633350D01* +G01* +X412500Y429650D02* +G75* +G01* +X412500Y416650D01* +G03* +X424500Y416650I6000J0D01* +G01* +X424500Y429650D01* +G03* +X412500Y429650I-6000J0D01* +G01* +X224500Y620350D02* +G75* +G01* +X224500Y633350D01* +G03* +X212500Y633350I-6000J0D01* +G01* +X212500Y620350D01* +G03* +X224500Y620350I6000J0D01* +G01* +X541500Y416650D02* +G75* +G02* +X529500Y416650I-6000J0D01* +G01* +X529500Y429650D01* +G02* +X541500Y429650I6000J0D01* +G01* +X541500Y416650D01* +G01* +X129500Y429650D02* +G75* +G02* +X141500Y429650I6000J0D01* +G01* +X141500Y416650D01* +G02* +X129500Y416650I-6000J0D01* +G01* +X129500Y429650D01* +G01* +X24500Y416650D02* +G75* +G02* +X12500Y416650I-6000J0D01* +G01* +X12500Y429650D01* +G02* +X24500Y429650I6000J0D01* +G01* +X24500Y416650D01* +G01* +X941500Y416650D02* +G75* +G02* +X929500Y416650I-6000J0D01* +G01* +X929500Y429650D01* +G02* +X941500Y429650I6000J0D01* +G01* +X941500Y416650D01* +G01* +X424500Y620350D02* +G75* +G01* +X424500Y633350D01* +G03* +X412500Y633350I-6000J0D01* +G01* +X412500Y620350D01* +G03* +X424500Y620350I6000J0D01* +G01* +X824500Y416650D02* +G75* +G02* +X812500Y416650I-6000J0D01* +G01* +X812500Y429650D01* +G02* +X824500Y429650I6000J0D01* +G01* +X824500Y416650D01* +G01* +X12500Y633350D02* +G75* +G01* +X12500Y620350D01* +G03* +X24500Y620350I6000J0D01* +G01* +X24500Y633350D01* +G03* +X12500Y633350I-6000J0D01* +G01* +X660500Y626850D02* +G75* +G03* +X660500Y626850I-6000J0D01* +G01* +X905500Y626850D02* +G75* +G03* +X905500Y626850I-6000J0D01* +G01* +X505500Y626850D02* +G75* +G03* +X505500Y626850I-6000J0D01* +G01* +X860500Y626850D02* +G75* +G03* +X860500Y626850I-6000J0D01* +G01* +X705500Y626850D02* +G75* +G03* +X705500Y626850I-6000J0D01* +G01* +X705500Y423150D02* +G75* +G03* +X705500Y423150I-6000J0D01* +G01* +X660500Y423150D02* +G75* +G03* +X660500Y423150I-6000J0D01* +G01* +X505500Y423150D02* +G75* +G03* +X505500Y423150I-6000J0D01* +G01* +X260500Y626850D02* +G75* +G03* +X260500Y626850I-6000J0D01* +G01* +X905500Y423150D02* +G75* +G03* +X905500Y423150I-6000J0D01* +G01* +X460500Y423150D02* +G75* +G03* +X460500Y423150I-6000J0D01* +G01* +X460500Y626850D02* +G75* +G03* +X460500Y626850I-6000J0D01* +G01* +X60500Y626850D02* +G75* +G03* +X60500Y626850I-6000J0D01* +G01* +X105500Y626850D02* +G75* +G03* +X105500Y626850I-6000J0D01* +G01* +X60500Y423150D02* +G75* +G03* +X60500Y423150I-6000J0D01* +G01* +X305500Y626850D02* +G75* +G03* +X305500Y626850I-6000J0D01* +G01* +X860500Y423150D02* +G75* +G03* +X860500Y423150I-6000J0D01* +G01* +X541500Y633350D02* +G75* +G01* +X541500Y620350D01* +G02* +X529500Y620350I-6000J0D01* +G01* +X529500Y633350D01* +G02* +X541500Y633350I6000J0D01* +G01* +X941500Y429650D02* +G75* +G01* +X941500Y416650D01* +G02* +X929500Y416650I-6000J0D01* +G01* +X929500Y429650D01* +G02* +X941500Y429650I6000J0D01* +G01* +X260500Y423150D02* +G75* +G03* +X260500Y423150I-6000J0D01* +G01* +X305500Y423150D02* +G75* +G03* +X305500Y423150I-6000J0D01* +G01* +X824500Y633350D02* +G75* +G03* +X812500Y633350I-6000J0D01* +G01* +X812500Y620350D01* +G03* +X824500Y620350I6000J0D01* +G01* +X824500Y633350D01* +G01* +X105500Y423150D02* +G75* +G03* +X105500Y423150I-6000J0D01* +G01* +X217000Y560000D02* +G75* +G03* +X237000Y580000I0J20000D01* +G03* +X217000Y600000I-20000J0D01* +G01* +X200000Y600000D01* +G01* +X200000Y700000D01* +G03* +X180000Y720000I-20000J0D01* +G01* +X174000Y720000D01* +G03* +X154000Y700000I0J-20000D01* +G01* +X154000Y600000D01* +G01* +X137000Y600000D01* +G03* +X117000Y580000I0J-20000D01* +G03* +X137000Y560000I20000J0D01* +G01* +X217000Y560000D01* +G01* +X417000Y560000D02* +G75* +G03* +X437000Y580000I0J20000D01* +G03* +X417000Y600000I-20000J0D01* +G01* +X400000Y600000D01* +G01* +X400000Y700000D01* +G03* +X380000Y720000I-20000J0D01* +G01* +X374000Y720000D01* +G03* +X354000Y700000I0J-20000D01* +G01* +X354000Y600000D01* +G01* +X337000Y600000D01* +G03* +X317000Y580000I0J-20000D01* +G03* +X337000Y560000I20000J0D01* +G01* +X417000Y560000D01* +G01* +X617000Y560000D02* +G75* +G03* +X637000Y580000I0J20000D01* +G03* +X617000Y600000I-20000J0D01* +G01* +X600000Y600000D01* +G01* +X600000Y700000D01* +G03* +X580000Y720000I-20000J0D01* +G01* +X574000Y720000D01* +G03* +X554000Y700000I0J-20000D01* +G01* +X554000Y600000D01* +G01* +X537000Y600000D01* +G03* +X517000Y580000I0J-20000D01* +G03* +X537000Y560000I20000J0D01* +G01* +X617000Y560000D01* +G01* +X817000Y560000D02* +G75* +G03* +X837000Y580000I0J20000D01* +G03* +X817000Y600000I-20000J0D01* +G01* +X800000Y600000D01* +G01* +X800000Y700000D01* +G03* +X780000Y720000I-20000J0D01* +G01* +X774000Y720000D01* +G03* +X754000Y700000I0J-20000D01* +G01* +X754000Y600000D01* +G01* +X737000Y600000D01* +G03* +X717000Y580000I0J-20000D01* +G03* +X737000Y560000I20000J0D01* +G01* +X817000Y560000D01* +G01* +X180000Y330000D02* +G75* +G03* +X200000Y350000I0J20000D01* +G01* +X200000Y450000D01* +G01* +X217000Y450000D01* +G03* +X237000Y470000I0J20000D01* +G03* +X217000Y490000I-20000J0D01* +G01* +X137000Y490000D01* +G03* +X117000Y470000I0J-20000D01* +G03* +X137000Y450000I20000J0D01* +G01* +X154000Y450000D01* +G01* +X154000Y350000D01* +G03* +X174000Y330000I20000J0D01* +G01* +X180000Y330000D01* +G01* +X380000Y330000D02* +G75* +G03* +X400000Y350000I0J20000D01* +G01* +X400000Y450000D01* +G01* +X417000Y450000D01* +G03* +X437000Y470000I0J20000D01* +G03* +X417000Y490000I-20000J0D01* +G01* +X337000Y490000D01* +G03* +X317000Y470000I0J-20000D01* +G03* +X337000Y450000I20000J0D01* +G01* +X354000Y450000D01* +G01* +X354000Y350000D01* +G03* +X374000Y330000I20000J0D01* +G01* +X380000Y330000D01* +G01* +X580000Y330000D02* +G75* +G03* +X600000Y350000I0J20000D01* +G01* +X600000Y450000D01* +G01* +X617000Y450000D01* +G03* +X637000Y470000I0J20000D01* +G03* +X617000Y490000I-20000J0D01* +G01* +X537000Y490000D01* +G03* +X517000Y470000I0J-20000D01* +G03* +X537000Y450000I20000J0D01* +G01* +X554000Y450000D01* +G01* +X554000Y350000D01* +G03* +X574000Y330000I20000J0D01* +G01* +X580000Y330000D01* +G01* +X780000Y330000D02* +G75* +G03* +X800000Y350000I0J20000D01* +G01* +X800000Y450000D01* +G01* +X817000Y450000D01* +G03* +X837000Y470000I0J20000D01* +G03* +X817000Y490000I-20000J0D01* +G01* +X737000Y490000D01* +G03* +X717000Y470000I0J-20000D01* +G03* +X737000Y450000I20000J0D01* +G01* +X754000Y450000D01* +G01* +X754000Y350000D01* +G03* +X774000Y330000I20000J0D01* +G01* +X780000Y330000D01* +G37* +M02* diff --git a/tests/expects/dxf_complex_fill_flip.gtl b/tests/expects/dxf_complex_fill_flip.gtl new file mode 100644 index 0000000..1f91be3 --- /dev/null +++ b/tests/expects/dxf_complex_fill_flip.gtl @@ -0,0 +1,746 @@ +%MOMM*% +%FSLAX34Y34*% +%IPPOS*% +%ADD10C,0*% +%ADD11C,0*% +G75* +%LPD*% +D10* +G36* +G01* +X0Y1000000D02* +G75* +G01* +X0Y0D01* +G01* +X1000000Y0D01* +G01* +X1000000Y1000000D01* +G01* +X0Y1000000D01* +G37* +G75* +%LPC*% +D11* +G36* +G01* +X800000Y150000D02* +G75* +G03* +X780000Y170000I-20000J0D01* +G01* +X774000Y170000D01* +G03* +X754000Y150000I0J-20000D01* +G01* +X754000Y50000D01* +G01* +X600000Y50000D01* +G01* +X600000Y150000D01* +G03* +X580000Y170000I-20000J0D01* +G01* +X574000Y170000D01* +G03* +X554000Y150000I0J-20000D01* +G01* +X554000Y50000D01* +G01* +X400000Y50000D01* +G01* +X400000Y150000D01* +G03* +X380000Y170000I-20000J0D01* +G01* +X374000Y170000D01* +G03* +X354000Y150000I0J-20000D01* +G01* +X354000Y50000D01* +G01* +X200000Y50000D01* +G01* +X200000Y150000D01* +G03* +X180000Y170000I-20000J0D01* +G01* +X174000Y170000D01* +G03* +X154000Y150000I0J-20000D01* +G01* +X154000Y50000D01* +G01* +X0Y50000D01* +G01* +X0Y450000D01* +G01* +X17000Y450000D01* +G03* +X37000Y470000I0J20000D01* +G03* +X17000Y490000I-20000J0D01* +G01* +X0Y490000D01* +G01* +X0Y560000D01* +G01* +X17000Y560000D01* +G03* +X37000Y580000I0J20000D01* +G03* +X17000Y600000I-20000J0D01* +G01* +X0Y600000D01* +G01* +X0Y1000000D01* +G01* +X154000Y1000000D01* +G01* +X154000Y900000D01* +G03* +X174000Y880000I20000J0D01* +G01* +X180000Y880000D01* +G03* +X200000Y900000I0J20000D01* +G01* +X200000Y1000000D01* +G01* +X354000Y1000000D01* +G01* +X354000Y900000D01* +G03* +X374000Y880000I20000J0D01* +G01* +X380000Y880000D01* +G03* +X400000Y900000I0J20000D01* +G01* +X400000Y1000000D01* +G01* +X554000Y1000000D01* +G01* +X554000Y900000D01* +G03* +X574000Y880000I20000J0D01* +G01* +X580000Y880000D01* +G03* +X600000Y900000I0J20000D01* +G01* +X600000Y1000000D01* +G01* +X754000Y1000000D01* +G01* +X754000Y900000D01* +G03* +X774000Y880000I20000J0D01* +G01* +X780000Y880000D01* +G03* +X800000Y900000I0J20000D01* +G01* +X800000Y1000000D01* +G01* +X954000Y1000000D01* +G01* +X954000Y600000D01* +G01* +X937000Y600000D01* +G03* +X917000Y580000I0J-20000D01* +G03* +X937000Y560000I20000J0D01* +G01* +X954000Y560000D01* +G01* +X954000Y490000D01* +G01* +X937000Y490000D01* +G03* +X917000Y470000I0J-20000D01* +G03* +X937000Y450000I20000J0D01* +G01* +X954000Y450000D01* +G01* +X954000Y50000D01* +G01* +X800000Y50000D01* +G01* +X800000Y150000D01* +G37* +%LPD*% +G36* +G01* +X624500Y620350D02* +G75* +G01* +X624500Y633350D01* +G03* +X612500Y633350I-6000J0D01* +G01* +X612500Y620350D01* +G03* +X624500Y620350I6000J0D01* +G01* +X824500Y620350D02* +G75* +G02* +X812500Y620350I-6000J0D01* +G01* +X812500Y633350D01* +G02* +X824500Y633350I6000J0D01* +G01* +X824500Y620350D01* +G01* +X729500Y633350D02* +G75* +G02* +X741500Y633350I6000J0D01* +G01* +X741500Y620350D01* +G02* +X729500Y620350I-6000J0D01* +G01* +X729500Y633350D01* +G01* +X141500Y620350D02* +G75* +G01* +X141500Y633350D01* +G03* +X129500Y633350I-6000J0D01* +G01* +X129500Y620350D01* +G03* +X141500Y620350I6000J0D01* +G01* +X212500Y429650D02* +G75* +G01* +X212500Y416650D01* +G03* +X224500Y416650I6000J0D01* +G01* +X224500Y429650D01* +G03* +X212500Y429650I-6000J0D01* +G01* +X341500Y416650D02* +G75* +G01* +X341500Y429650D01* +G03* +X329500Y429650I-6000J0D01* +G01* +X329500Y416650D01* +G03* +X341500Y416650I6000J0D01* +G01* +X341500Y620350D02* +G75* +G01* +X341500Y633350D01* +G03* +X329500Y633350I-6000J0D01* +G01* +X329500Y620350D01* +G03* +X341500Y620350I6000J0D01* +G01* +X624500Y416650D02* +G75* +G01* +X624500Y429650D01* +G03* +X612500Y429650I-6000J0D01* +G01* +X612500Y416650D01* +G03* +X624500Y416650I6000J0D01* +G01* +X729500Y429650D02* +G75* +G01* +X729500Y416650D01* +G03* +X741500Y416650I6000J0D01* +G01* +X741500Y429650D01* +G03* +X729500Y429650I-6000J0D01* +G01* +X541500Y620350D02* +G75* +G02* +X529500Y620350I-6000J0D01* +G01* +X529500Y633350D01* +G02* +X541500Y633350I6000J0D01* +G01* +X541500Y620350D01* +G01* +X929500Y633350D02* +G75* +G02* +X941500Y633350I6000J0D01* +G01* +X941500Y620350D01* +G02* +X929500Y620350I-6000J0D01* +G01* +X929500Y633350D01* +G01* +X412500Y429650D02* +G75* +G01* +X412500Y416650D01* +G03* +X424500Y416650I6000J0D01* +G01* +X424500Y429650D01* +G03* +X412500Y429650I-6000J0D01* +G01* +X224500Y620350D02* +G75* +G01* +X224500Y633350D01* +G03* +X212500Y633350I-6000J0D01* +G01* +X212500Y620350D01* +G03* +X224500Y620350I6000J0D01* +G01* +X541500Y416650D02* +G75* +G02* +X529500Y416650I-6000J0D01* +G01* +X529500Y429650D01* +G02* +X541500Y429650I6000J0D01* +G01* +X541500Y416650D01* +G01* +X129500Y429650D02* +G75* +G02* +X141500Y429650I6000J0D01* +G01* +X141500Y416650D01* +G02* +X129500Y416650I-6000J0D01* +G01* +X129500Y429650D01* +G01* +X24500Y416650D02* +G75* +G02* +X12500Y416650I-6000J0D01* +G01* +X12500Y429650D01* +G02* +X24500Y429650I6000J0D01* +G01* +X24500Y416650D01* +G01* +X941500Y416650D02* +G75* +G02* +X929500Y416650I-6000J0D01* +G01* +X929500Y429650D01* +G02* +X941500Y429650I6000J0D01* +G01* +X941500Y416650D01* +G01* +X424500Y620350D02* +G75* +G01* +X424500Y633350D01* +G03* +X412500Y633350I-6000J0D01* +G01* +X412500Y620350D01* +G03* +X424500Y620350I6000J0D01* +G01* +X824500Y416650D02* +G75* +G02* +X812500Y416650I-6000J0D01* +G01* +X812500Y429650D01* +G02* +X824500Y429650I6000J0D01* +G01* +X824500Y416650D01* +G01* +X12500Y633350D02* +G75* +G01* +X12500Y620350D01* +G03* +X24500Y620350I6000J0D01* +G01* +X24500Y633350D01* +G03* +X12500Y633350I-6000J0D01* +G01* +X660500Y626850D02* +G75* +G03* +X660500Y626850I-6000J0D01* +G01* +X905500Y626850D02* +G75* +G03* +X905500Y626850I-6000J0D01* +G01* +X505500Y626850D02* +G75* +G03* +X505500Y626850I-6000J0D01* +G01* +X860500Y626850D02* +G75* +G03* +X860500Y626850I-6000J0D01* +G01* +X705500Y626850D02* +G75* +G03* +X705500Y626850I-6000J0D01* +G01* +X705500Y423150D02* +G75* +G03* +X705500Y423150I-6000J0D01* +G01* +X660500Y423150D02* +G75* +G03* +X660500Y423150I-6000J0D01* +G01* +X505500Y423150D02* +G75* +G03* +X505500Y423150I-6000J0D01* +G01* +X260500Y626850D02* +G75* +G03* +X260500Y626850I-6000J0D01* +G01* +X905500Y423150D02* +G75* +G03* +X905500Y423150I-6000J0D01* +G01* +X460500Y423150D02* +G75* +G03* +X460500Y423150I-6000J0D01* +G01* +X460500Y626850D02* +G75* +G03* +X460500Y626850I-6000J0D01* +G01* +X60500Y626850D02* +G75* +G03* +X60500Y626850I-6000J0D01* +G01* +X105500Y626850D02* +G75* +G03* +X105500Y626850I-6000J0D01* +G01* +X60500Y423150D02* +G75* +G03* +X60500Y423150I-6000J0D01* +G01* +X305500Y626850D02* +G75* +G03* +X305500Y626850I-6000J0D01* +G01* +X860500Y423150D02* +G75* +G03* +X860500Y423150I-6000J0D01* +G01* +X541500Y633350D02* +G75* +G01* +X541500Y620350D01* +G02* +X529500Y620350I-6000J0D01* +G01* +X529500Y633350D01* +G02* +X541500Y633350I6000J0D01* +G01* +X941500Y429650D02* +G75* +G01* +X941500Y416650D01* +G02* +X929500Y416650I-6000J0D01* +G01* +X929500Y429650D01* +G02* +X941500Y429650I6000J0D01* +G01* +X260500Y423150D02* +G75* +G03* +X260500Y423150I-6000J0D01* +G01* +X305500Y423150D02* +G75* +G03* +X305500Y423150I-6000J0D01* +G01* +X824500Y633350D02* +G75* +G03* +X812500Y633350I-6000J0D01* +G01* +X812500Y620350D01* +G03* +X824500Y620350I6000J0D01* +G01* +X824500Y633350D01* +G01* +X105500Y423150D02* +G75* +G03* +X105500Y423150I-6000J0D01* +G01* +X217000Y560000D02* +G75* +G03* +X237000Y580000I0J20000D01* +G03* +X217000Y600000I-20000J0D01* +G01* +X200000Y600000D01* +G01* +X200000Y700000D01* +G03* +X180000Y720000I-20000J0D01* +G01* +X174000Y720000D01* +G03* +X154000Y700000I0J-20000D01* +G01* +X154000Y600000D01* +G01* +X137000Y600000D01* +G03* +X117000Y580000I0J-20000D01* +G03* +X137000Y560000I20000J0D01* +G01* +X217000Y560000D01* +G01* +X417000Y560000D02* +G75* +G03* +X437000Y580000I0J20000D01* +G03* +X417000Y600000I-20000J0D01* +G01* +X400000Y600000D01* +G01* +X400000Y700000D01* +G03* +X380000Y720000I-20000J0D01* +G01* +X374000Y720000D01* +G03* +X354000Y700000I0J-20000D01* +G01* +X354000Y600000D01* +G01* +X337000Y600000D01* +G03* +X317000Y580000I0J-20000D01* +G03* +X337000Y560000I20000J0D01* +G01* +X417000Y560000D01* +G01* +X617000Y560000D02* +G75* +G03* +X637000Y580000I0J20000D01* +G03* +X617000Y600000I-20000J0D01* +G01* +X600000Y600000D01* +G01* +X600000Y700000D01* +G03* +X580000Y720000I-20000J0D01* +G01* +X574000Y720000D01* +G03* +X554000Y700000I0J-20000D01* +G01* +X554000Y600000D01* +G01* +X537000Y600000D01* +G03* +X517000Y580000I0J-20000D01* +G03* +X537000Y560000I20000J0D01* +G01* +X617000Y560000D01* +G01* +X817000Y560000D02* +G75* +G03* +X837000Y580000I0J20000D01* +G03* +X817000Y600000I-20000J0D01* +G01* +X800000Y600000D01* +G01* +X800000Y700000D01* +G03* +X780000Y720000I-20000J0D01* +G01* +X774000Y720000D01* +G03* +X754000Y700000I0J-20000D01* +G01* +X754000Y600000D01* +G01* +X737000Y600000D01* +G03* +X717000Y580000I0J-20000D01* +G03* +X737000Y560000I20000J0D01* +G01* +X817000Y560000D01* +G01* +X180000Y330000D02* +G75* +G03* +X200000Y350000I0J20000D01* +G01* +X200000Y450000D01* +G01* +X217000Y450000D01* +G03* +X237000Y470000I0J20000D01* +G03* +X217000Y490000I-20000J0D01* +G01* +X137000Y490000D01* +G03* +X117000Y470000I0J-20000D01* +G03* +X137000Y450000I20000J0D01* +G01* +X154000Y450000D01* +G01* +X154000Y350000D01* +G03* +X174000Y330000I20000J0D01* +G01* +X180000Y330000D01* +G01* +X380000Y330000D02* +G75* +G03* +X400000Y350000I0J20000D01* +G01* +X400000Y450000D01* +G01* +X417000Y450000D01* +G03* +X437000Y470000I0J20000D01* +G03* +X417000Y490000I-20000J0D01* +G01* +X337000Y490000D01* +G03* +X317000Y470000I0J-20000D01* +G03* +X337000Y450000I20000J0D01* +G01* +X354000Y450000D01* +G01* +X354000Y350000D01* +G03* +X374000Y330000I20000J0D01* +G01* +X380000Y330000D01* +G01* +X580000Y330000D02* +G75* +G03* +X600000Y350000I0J20000D01* +G01* +X600000Y450000D01* +G01* +X617000Y450000D01* +G03* +X637000Y470000I0J20000D01* +G03* +X617000Y490000I-20000J0D01* +G01* +X537000Y490000D01* +G03* +X517000Y470000I0J-20000D01* +G03* +X537000Y450000I20000J0D01* +G01* +X554000Y450000D01* +G01* +X554000Y350000D01* +G03* +X574000Y330000I20000J0D01* +G01* +X580000Y330000D01* +G01* +X780000Y330000D02* +G75* +G03* +X800000Y350000I0J20000D01* +G01* +X800000Y450000D01* +G01* +X817000Y450000D01* +G03* +X837000Y470000I0J20000D01* +G03* +X817000Y490000I-20000J0D01* +G01* +X737000Y490000D01* +G03* +X717000Y470000I0J-20000D01* +G03* +X737000Y450000I20000J0D01* +G01* +X754000Y450000D01* +G01* +X754000Y350000D01* +G03* +X774000Y330000I20000J0D01* +G01* +X780000Y330000D01* +G37* +M02* diff --git a/tests/test_dxf.py b/tests/test_dxf.py index 3d4d28e..782c8c7 100644 --- a/tests/test_dxf.py +++ b/tests/test_dxf.py @@ -19,6 +19,7 @@ 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.COMPLEX_FILE = os.path.join(cls.INDIR, 'ref_dxf_complex.dxf') try: os.mkdir(cls.OUTDIR) except FileExistsError: @@ -127,5 +128,26 @@ class TestExcellon(unittest.TestCase): dxf.write(outfile) self._checkResult(outfile) + def test_complex_fill(self): + outfile = os.path.join(self.OUTDIR, self.OUTPREFIX + 'complex_fill.gtl') + dxf = gerberex.read(self.COMPLEX_FILE) + dxf.draw_mode = dxf.DM_FILL + dxf.write(outfile) + self._checkResult(outfile) + + def test_complex_fill_flip(self): + outfile = os.path.join( + self.OUTDIR, self.OUTPREFIX + 'complex_fill_flip.gtl') + ctx = gerberex.GerberComposition() + base = gerberex.rectangle(width=100, height=100, left=0, bottom=0, units='metric') + base.draw_mode = base.DM_FILL + ctx.merge(base) + dxf = gerberex.read(self.COMPLEX_FILE) + dxf.negate_polarity() + dxf.draw_mode = dxf.DM_FILL + ctx.merge(dxf) + ctx.dump(outfile) + self._checkResult(outfile) + if __name__ == '__main__': unittest.main() -- cgit