diff --git a/README.md b/README.md index 3631c274627df621e22d12754e63c3ce7a779be2..323069230c866f2bff182ef12d78887797d5bd8f 100644 --- a/README.md +++ b/README.md @@ -441,4 +441,45 @@ | | |-- ... | |--wiring | | |--wire -~~~ \ No newline at end of file +~~~ + + +### 07/29/2019 + +- Was working on 'dsn_python' Python Library. +- Class tree: +~~~ + |--dsnwritter.py (top and second level structure) + |--dsn_module.py + |--module class + |--load module functions + |--dsn_rule.py + |--dsn_geo.py + |--boudary class + |--keepout class + |--load drawing functions + |--dsn_net.py + |--net class + |--netclass class + |--load netlist functions +~~~ +- Text tree structure is done. + - Documentation and notes for code needed +- Functions are needed to help user use library. + - Function that load `dxf` file + - Function that load `footprint` file + - Function that load `netlist` file +- For board outline/footprint/netlist not loaded from file but define through this library manually, it works very well for now. +- Pull out those information from low-level file and convert it to proper text for `dsn` file + +- Record of Tips: + - `Freerouting` cannot take more than one boundary. (error: exact 1 bounding expected) + +- Able to use functions to load `dxf` drawings +- "internal cut issue" solved + - Treat every line individually as polygon and labeled as keepout in `dsn` library + -  + -  + + +- TODO: functions that load modules and footprints diff --git a/dsn_line_test.dxf b/dsn_line_test.dxf new file mode 100644 index 0000000000000000000000000000000000000000..5ef125f9e8aaa7f5d57732564623588ba5de2cb8 --- /dev/null +++ b/dsn_line_test.dxf @@ -0,0 +1,6154 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1014 + 9 +$HANDSEED + 5 +FFFF + 9 +$MEASUREMENT + 70 + 1 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 4 + 0 +VPORT + 5 +2E +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*ACTIVE + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +210.0 + 22 +148.5 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +341.0 + 41 +1.24 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 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 +100 +AcDbSymbolTable + 70 +11 + 0 +LAYER + 5 +50 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +51 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +VIEWPORTS + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +52 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +TABLEGRID + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +53 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +TABLECONTENT + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +54 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DIMENSIONS + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +55 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +TABLEBACKGROUND + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +56 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Cut + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +57 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Circuit + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +58 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Label + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +59 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Fold + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +5a +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Pin_temp + 70 +0 + 6 +CONTINUOUS + 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 +2.5 + 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 + 2 + 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 + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 3 + + 4 + + 5 + + 6 + + 7 + + 40 +1.0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 +140 +2.5 +141 +2.5 +142 +0.0 +143 +0.03937007874016 +144 +1.0 +145 +0.0 +146 +1.0 +147 +0.625 + 71 + 0 + 72 + 0 + 73 + 0 + 74 + 0 + 75 + 0 + 76 + 0 + 77 + 1 + 78 + 8 +170 + 0 +171 + 3 +172 + 1 +173 + 0 +174 + 0 +175 + 0 +176 + 0 +177 + 0 +178 + 0 +270 + 2 +271 + 2 +272 + 2 +273 + 2 +274 + 3 +340 +11 +275 + 0 +280 + 0 +281 + 0 +282 + 0 +283 + 0 +284 + 8 +285 + 0 +286 + 0 +287 + 3 +288 + 0 + 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 + 0 +BLOCK_RECORD + 5 +1B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*PAPER_SPACE + 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 +1C +330 +1B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockBegin + 2 +*PAPER_SPACE + 1 + + 0 +ENDBLK + 5 +1D +330 +1B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE + 5 +100 +100 +AcDbEntity + 8 +Cut + 62 +1 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +-26.696276 + 20 +280.310911 + 30 +0.0 + 10 +216.684783 + 20 +280.310911 + 30 +0.0 + 10 +216.684783 + 20 +-19.577284 + 30 +0.0 + 10 +-26.696276 + 20 +-19.577284 + 30 +0.0 + 0 +LWPOLYLINE + 5 +101 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +106.000248 + 20 +113.732116 + 30 +0.0 + 10 +106.000248 + 20 +113.467532 + 30 +0.0 + 10 +118.999971 + 20 +113.467532 + 30 +0.0 + 10 +118.999971 + 20 +113.732116 + 30 +0.0 + 0 +LWPOLYLINE + 5 +102 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +106.000248 + 20 +151.732381 + 30 +0.0 + 10 +106.000248 + 20 +151.467798 + 30 +0.0 + 10 +118.999971 + 20 +151.467798 + 30 +0.0 + 10 +118.999971 + 20 +151.732381 + 30 +0.0 + 0 +LWPOLYLINE + 5 +103 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +35.999870 + 20 +31.732481 + 30 +0.0 + 10 +35.999870 + 20 +31.467897 + 30 +0.0 + 10 +59.999954 + 20 +31.467897 + 30 +0.0 + 10 +59.999954 + 20 +31.732481 + 30 +0.0 + 0 +LWPOLYLINE + 5 +104 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +0.000000 + 20 +31.732481 + 30 +0.0 + 10 +0.000000 + 20 +31.467897 + 30 +0.0 + 10 +24.000085 + 20 +31.467897 + 30 +0.0 + 10 +24.000085 + 20 +31.732481 + 30 +0.0 + 0 +LWPOLYLINE + 5 +105 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +106.000248 + 20 +18.132262 + 30 +0.0 + 10 +106.000248 + 20 +17.867679 + 30 +0.0 + 10 +110.000005 + 20 +17.867679 + 30 +0.0 + 10 +110.000005 + 20 +18.132262 + 30 +0.0 + 0 +LWPOLYLINE + 5 +106 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +106.000248 + 20 +27.132223 + 30 +0.0 + 10 +106.000248 + 20 +26.867640 + 30 +0.0 + 10 +110.000005 + 20 +26.867640 + 30 +0.0 + 10 +110.000005 + 20 +27.132223 + 30 +0.0 + 0 +LWPOLYLINE + 5 +107 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +105.867957 + 20 +26.999931 + 30 +0.0 + 10 +105.867957 + 20 +17.999971 + 30 +0.0 + 10 +106.132540 + 20 +17.999971 + 30 +0.0 + 10 +106.132540 + 20 +26.999931 + 30 +0.0 + 0 +LWPOLYLINE + 5 +108 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +151.000084 + 20 +151.732381 + 30 +0.0 + 10 +151.000084 + 20 +151.467798 + 30 +0.0 + 10 +160.999993 + 20 +151.467798 + 30 +0.0 + 10 +160.999993 + 20 +151.732381 + 30 +0.0 + 0 +LWPOLYLINE + 5 +109 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +151.000084 + 20 +211.732338 + 30 +0.0 + 10 +151.000084 + 20 +211.467754 + 30 +0.0 + 10 +160.999993 + 20 +211.467754 + 30 +0.0 + 10 +160.999993 + 20 +211.732338 + 30 +0.0 + 0 +LWPOLYLINE + 5 +10a +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +7.250204 + 20 +61.800403 + 30 +0.0 + 10 +7.250204 + 20 +61.535819 + 30 +0.0 + 10 +7.749915 + 20 +61.535819 + 30 +0.0 + 10 +7.749915 + 20 +61.800403 + 30 +0.0 + 0 +LWPOLYLINE + 5 +10b +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +7.617623 + 20 +61.668111 + 30 +0.0 + 10 +7.617623 + 20 +46.259233 + 30 +0.0 + 10 +7.882206 + 20 +46.259233 + 30 +0.0 + 10 +7.882206 + 20 +61.668111 + 30 +0.0 + 0 +LWPOLYLINE + 5 +10c +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +7.250204 + 20 +46.391524 + 30 +0.0 + 10 +7.250204 + 20 +46.126941 + 30 +0.0 + 10 +7.749915 + 20 +46.126941 + 30 +0.0 + 10 +7.749915 + 20 +46.391524 + 30 +0.0 + 0 +LWPOLYLINE + 5 +10d +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +7.117912 + 20 +61.668111 + 30 +0.0 + 10 +7.117912 + 20 +46.259233 + 30 +0.0 + 10 +7.382495 + 20 +46.259233 + 30 +0.0 + 10 +7.382495 + 20 +61.668111 + 30 +0.0 + 0 +LWPOLYLINE + 5 +10e +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +7.250204 + 20 +99.073064 + 30 +0.0 + 10 +7.250204 + 20 +98.808480 + 30 +0.0 + 10 +7.749915 + 20 +98.808480 + 30 +0.0 + 10 +7.749915 + 20 +99.073064 + 30 +0.0 + 0 +LWPOLYLINE + 5 +10f +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +7.617623 + 20 +98.940772 + 30 +0.0 + 10 +7.617623 + 20 +83.531894 + 30 +0.0 + 10 +7.882206 + 20 +83.531894 + 30 +0.0 + 10 +7.882206 + 20 +98.940772 + 30 +0.0 + 0 +LWPOLYLINE + 5 +110 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +7.250204 + 20 +83.664186 + 30 +0.0 + 10 +7.250204 + 20 +83.399602 + 30 +0.0 + 10 +7.749915 + 20 +83.399602 + 30 +0.0 + 10 +7.749915 + 20 +83.664186 + 30 +0.0 + 0 +LWPOLYLINE + 5 +111 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +7.117912 + 20 +98.940772 + 30 +0.0 + 10 +7.117912 + 20 +83.531894 + 30 +0.0 + 10 +7.382495 + 20 +83.531894 + 30 +0.0 + 10 +7.382495 + 20 +98.940772 + 30 +0.0 + 0 +LWPOLYLINE + 5 +112 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +169.867667 + 20 +249.599793 + 30 +0.0 + 10 +169.867667 + 20 +211.600046 + 30 +0.0 + 10 +170.132251 + 20 +211.600046 + 30 +0.0 + 10 +170.132251 + 20 +249.599793 + 30 +0.0 + 0 +LWPOLYLINE + 5 +113 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +137.999846 + 20 +249.732084 + 30 +0.0 + 10 +137.999846 + 20 +249.467501 + 30 +0.0 + 10 +151.000084 + 20 +249.467501 + 30 +0.0 + 10 +151.000084 + 20 +249.732084 + 30 +0.0 + 0 +LWPOLYLINE + 5 +114 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +106.000248 + 20 +211.732338 + 30 +0.0 + 10 +106.000248 + 20 +211.467754 + 30 +0.0 + 10 +118.999971 + 20 +211.467754 + 30 +0.0 + 10 +118.999971 + 20 +211.732338 + 30 +0.0 + 0 +LWPOLYLINE + 5 +115 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +151.000084 + 20 +211.732338 + 30 +0.0 + 10 +151.000084 + 20 +211.467754 + 30 +0.0 + 10 +169.999959 + 20 +211.467754 + 30 +0.0 + 10 +169.999959 + 20 +211.732338 + 30 +0.0 + 0 +LWPOLYLINE + 5 +116 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +151.000084 + 20 +249.732084 + 30 +0.0 + 10 +151.000084 + 20 +249.467501 + 30 +0.0 + 10 +169.999959 + 20 +249.467501 + 30 +0.0 + 10 +169.999959 + 20 +249.732084 + 30 +0.0 + 0 +LWPOLYLINE + 5 +117 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +118.999971 + 20 +249.732084 + 30 +0.0 + 10 +118.999971 + 20 +249.467501 + 30 +0.0 + 10 +137.999846 + 20 +249.467501 + 30 +0.0 + 10 +137.999846 + 20 +249.732084 + 30 +0.0 + 0 +LWPOLYLINE + 5 +118 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +118.999971 + 20 +211.732338 + 30 +0.0 + 10 +118.999971 + 20 +211.467754 + 30 +0.0 + 10 +137.999846 + 20 +211.467754 + 30 +0.0 + 10 +137.999846 + 20 +211.732338 + 30 +0.0 + 0 +LWPOLYLINE + 5 +119 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +65.328829 + 20 +108.600130 + 30 +0.0 + 10 +65.328829 + 20 +85.599983 + 30 +0.0 + 10 +65.593412 + 20 +85.599983 + 30 +0.0 + 10 +65.593412 + 20 +108.600130 + 30 +0.0 + 0 +LWPOLYLINE + 5 +11a +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +65.461121 + 20 +108.732422 + 30 +0.0 + 10 +65.461121 + 20 +108.467839 + 30 +0.0 + 10 +77.538937 + 20 +108.467839 + 30 +0.0 + 10 +77.538937 + 20 +108.732422 + 30 +0.0 + 0 +LWPOLYLINE + 5 +11b +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +77.406646 + 20 +108.600130 + 30 +0.0 + 10 +77.406646 + 20 +85.599983 + 30 +0.0 + 10 +77.671229 + 20 +85.599983 + 30 +0.0 + 10 +77.671229 + 20 +108.600130 + 30 +0.0 + 0 +LWPOLYLINE + 5 +11c +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +65.461121 + 20 +85.732275 + 30 +0.0 + 10 +65.461121 + 20 +85.467691 + 30 +0.0 + 10 +77.538937 + 20 +85.467691 + 30 +0.0 + 10 +77.538937 + 20 +85.732275 + 30 +0.0 + 0 +LWPOLYLINE + 5 +11d +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +44.250012 + 20 +191.982120 + 30 +0.0 + 10 +44.250012 + 20 +191.717537 + 30 +0.0 + 10 +44.750241 + 20 +191.717537 + 30 +0.0 + 10 +44.750241 + 20 +191.982120 + 30 +0.0 + 0 +LWPOLYLINE + 5 +11e +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +44.617950 + 20 +191.849829 + 30 +0.0 + 10 +44.617950 + 20 +171.349788 + 30 +0.0 + 10 +44.882533 + 20 +171.349788 + 30 +0.0 + 10 +44.882533 + 20 +191.849829 + 30 +0.0 + 0 +LWPOLYLINE + 5 +11f +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +44.250012 + 20 +171.482079 + 30 +0.0 + 10 +44.250012 + 20 +171.217496 + 30 +0.0 + 10 +44.750241 + 20 +171.217496 + 30 +0.0 + 10 +44.750241 + 20 +171.482079 + 30 +0.0 + 0 +LWPOLYLINE + 5 +120 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +44.117720 + 20 +191.849829 + 30 +0.0 + 10 +44.117720 + 20 +171.349788 + 30 +0.0 + 10 +44.382304 + 20 +171.349788 + 30 +0.0 + 10 +44.382304 + 20 +191.849829 + 30 +0.0 + 0 +LWPOLYLINE + 5 +121 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +150.406841 + 20 +108.600130 + 30 +0.0 + 10 +150.406841 + 20 +85.599983 + 30 +0.0 + 10 +150.671424 + 20 +85.599983 + 30 +0.0 + 10 +150.671424 + 20 +108.600130 + 30 +0.0 + 0 +LWPOLYLINE + 5 +122 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +94.250060 + 20 +126.148929 + 30 +0.0 + 10 +94.250060 + 20 +125.884346 + 30 +0.0 + 10 +94.749773 + 20 +125.884346 + 30 +0.0 + 10 +94.749773 + 20 +126.148929 + 30 +0.0 + 0 +LWPOLYLINE + 5 +123 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +94.117769 + 20 +139.183275 + 30 +0.0 + 10 +94.117769 + 20 +126.016638 + 30 +0.0 + 10 +94.382352 + 20 +126.016638 + 30 +0.0 + 10 +94.382352 + 20 +139.183275 + 30 +0.0 + 0 +LWPOLYLINE + 5 +124 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +94.250060 + 20 +139.315567 + 30 +0.0 + 10 +94.250060 + 20 +139.050984 + 30 +0.0 + 10 +94.749773 + 20 +139.050984 + 30 +0.0 + 10 +94.749773 + 20 +139.315567 + 30 +0.0 + 0 +LWPOLYLINE + 5 +125 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +94.617482 + 20 +139.183275 + 30 +0.0 + 10 +94.617482 + 20 +126.016638 + 30 +0.0 + 10 +94.882065 + 20 +126.016638 + 30 +0.0 + 10 +94.882065 + 20 +139.183275 + 30 +0.0 + 0 +LWPOLYLINE + 5 +126 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +36.867518 + 20 +211.600046 + 30 +0.0 + 10 +36.867518 + 20 +151.600089 + 30 +0.0 + 10 +37.132101 + 20 +151.600089 + 30 +0.0 + 10 +37.132101 + 20 +211.600046 + 30 +0.0 + 0 +LWPOLYLINE + 5 +127 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +158.367595 + 20 +61.417998 + 30 +0.0 + 10 +158.367595 + 20 +46.509346 + 30 +0.0 + 10 +158.632178 + 20 +46.509346 + 30 +0.0 + 10 +158.632178 + 20 +61.417998 + 30 +0.0 + 0 +LWPOLYLINE + 5 +128 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +163.406563 + 20 +66.511743 + 30 +0.0 + 10 +158.406351 + 20 +61.511531 + 30 +0.0 + 10 +158.593420 + 20 +61.324462 + 30 +0.0 + 10 +163.593632 + 20 +66.324674 + 30 +0.0 + 0 +LWPOLYLINE + 5 +129 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +158.593420 + 20 +46.602882 + 30 +0.0 + 10 +158.406351 + 20 +46.415295 + 30 +0.0 + 10 +163.406563 + 20 +41.415601 + 30 +0.0 + 10 +163.593632 + 20 +41.602669 + 30 +0.0 + 0 +LWPOLYLINE + 5 +12a +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +163.367805 + 20 +66.418210 + 30 +0.0 + 10 +163.367805 + 20 +61.417998 + 30 +0.0 + 10 +163.632388 + 20 +61.417998 + 30 +0.0 + 10 +163.632388 + 20 +66.418210 + 30 +0.0 + 0 +LWPOLYLINE + 5 +12b +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +158.367595 + 20 +126.266751 + 30 +0.0 + 10 +158.367595 + 20 +121.266541 + 30 +0.0 + 10 +158.632178 + 20 +121.266541 + 30 +0.0 + 10 +158.632178 + 20 +126.266751 + 30 +0.0 + 0 +LWPOLYLINE + 5 +12c +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +153.593726 + 20 +126.360286 + 30 +0.0 + 10 +153.406658 + 20 +126.173218 + 30 +0.0 + 10 +158.406351 + 20 +121.173006 + 30 +0.0 + 10 +158.593420 + 20 +121.360074 + 30 +0.0 + 0 +LWPOLYLINE + 5 +12d +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +158.406351 + 20 +144.026907 + 30 +0.0 + 10 +153.406658 + 20 +139.026698 + 30 +0.0 + 10 +153.593726 + 20 +138.839629 + 30 +0.0 + 10 +158.593420 + 20 +143.839839 + 30 +0.0 + 0 +LWPOLYLINE + 5 +12e +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +158.367595 + 20 +143.933374 + 30 +0.0 + 10 +158.367595 + 20 +138.933162 + 30 +0.0 + 10 +158.632178 + 20 +138.933162 + 30 +0.0 + 10 +158.632178 + 20 +143.933374 + 30 +0.0 + 0 +LWPOLYLINE + 5 +12f +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +153.367899 + 20 +138.933162 + 30 +0.0 + 10 +153.367899 + 20 +126.266751 + 30 +0.0 + 10 +153.632482 + 20 +126.266751 + 30 +0.0 + 10 +153.632482 + 20 +138.933162 + 30 +0.0 + 0 +LWPOLYLINE + 5 +130 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +-0.132292 + 20 +113.599824 + 30 +0.0 + 10 +-0.132292 + 20 +31.600189 + 30 +0.0 + 10 +0.132292 + 20 +31.600189 + 30 +0.0 + 10 +0.132292 + 20 +113.599824 + 30 +0.0 + 0 +LWPOLYLINE + 5 +131 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +138.460800 + 20 +108.732422 + 30 +0.0 + 10 +138.460800 + 20 +108.467839 + 30 +0.0 + 10 +150.539133 + 20 +108.467839 + 30 +0.0 + 10 +150.539133 + 20 +108.732422 + 30 +0.0 + 0 +LWPOLYLINE + 5 +132 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +138.460800 + 20 +85.732275 + 30 +0.0 + 10 +138.460800 + 20 +85.467691 + 30 +0.0 + 10 +150.539133 + 20 +85.467691 + 30 +0.0 + 10 +150.539133 + 20 +85.732275 + 30 +0.0 + 0 +LWPOLYLINE + 5 +133 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +95.999824 + 20 +211.732338 + 30 +0.0 + 10 +95.999824 + 20 +211.467754 + 30 +0.0 + 10 +106.000248 + 20 +211.467754 + 30 +0.0 + 10 +106.000248 + 20 +211.732338 + 30 +0.0 + 0 +LWPOLYLINE + 5 +134 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +80.617819 + 20 +74.850253 + 30 +0.0 + 10 +80.617819 + 20 +66.850224 + 30 +0.0 + 10 +80.882403 + 20 +66.850224 + 30 +0.0 + 10 +80.882403 + 20 +74.850253 + 30 +0.0 + 0 +LWPOLYLINE + 5 +135 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +95.999824 + 20 +249.732084 + 30 +0.0 + 10 +95.999824 + 20 +249.467501 + 30 +0.0 + 10 +106.000248 + 20 +249.467501 + 30 +0.0 + 10 +106.000248 + 20 +249.732084 + 30 +0.0 + 0 +LWPOLYLINE + 5 +136 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +107.617720 + 20 +74.850253 + 30 +0.0 + 10 +107.617720 + 20 +66.850224 + 30 +0.0 + 10 +107.882304 + 20 +66.850224 + 30 +0.0 + 10 +107.882304 + 20 +74.850253 + 30 +0.0 + 0 +LWPOLYLINE + 5 +137 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +160.867701 + 20 +151.600089 + 30 +0.0 + 10 +160.867701 + 20 +113.599824 + 30 +0.0 + 10 +161.132285 + 20 +113.599824 + 30 +0.0 + 10 +161.132285 + 20 +151.600089 + 30 +0.0 + 0 +LWPOLYLINE + 5 +138 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +149.867855 + 20 +51.099764 + 30 +0.0 + 10 +149.867855 + 20 +42.099798 + 30 +0.0 + 10 +150.132439 + 20 +42.099798 + 30 +0.0 + 10 +150.132439 + 20 +51.099764 + 30 +0.0 + 0 +LWPOLYLINE + 5 +139 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +150.000147 + 20 +51.232055 + 30 +0.0 + 10 +150.000147 + 20 +50.967472 + 30 +0.0 + 10 +153.999904 + 20 +50.967472 + 30 +0.0 + 10 +153.999904 + 20 +51.232055 + 30 +0.0 + 0 +LWPOLYLINE + 5 +13a +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +153.867612 + 20 +51.099764 + 30 +0.0 + 10 +153.867612 + 20 +42.099798 + 30 +0.0 + 10 +154.132195 + 20 +42.099798 + 30 +0.0 + 10 +154.132195 + 20 +51.099764 + 30 +0.0 + 0 +LWPOLYLINE + 5 +13b +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +150.000147 + 20 +42.232089 + 30 +0.0 + 10 +150.000147 + 20 +41.967506 + 30 +0.0 + 10 +153.999904 + 20 +41.967506 + 30 +0.0 + 10 +153.999904 + 20 +42.232089 + 30 +0.0 + 0 +LWPOLYLINE + 5 +13c +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +160.867701 + 20 +211.600046 + 30 +0.0 + 10 +160.867701 + 20 +151.600089 + 30 +0.0 + 10 +161.132285 + 20 +151.600089 + 30 +0.0 + 10 +161.132285 + 20 +211.600046 + 30 +0.0 + 0 +LWPOLYLINE + 5 +13d +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +118.999971 + 20 +151.732381 + 30 +0.0 + 10 +118.999971 + 20 +151.467798 + 30 +0.0 + 10 +137.999846 + 20 +151.467798 + 30 +0.0 + 10 +137.999846 + 20 +151.732381 + 30 +0.0 + 0 +LWPOLYLINE + 5 +13e +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +81.000224 + 20 +211.732338 + 30 +0.0 + 10 +81.000224 + 20 +211.467754 + 30 +0.0 + 10 +93.999947 + 20 +211.467754 + 30 +0.0 + 10 +93.999947 + 20 +211.732338 + 30 +0.0 + 0 +LWPOLYLINE + 5 +13f +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +81.000224 + 20 +151.732381 + 30 +0.0 + 10 +81.000224 + 20 +151.467798 + 30 +0.0 + 10 +93.999947 + 20 +151.467798 + 30 +0.0 + 10 +93.999947 + 20 +151.732381 + 30 +0.0 + 0 +LWPOLYLINE + 5 +140 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +101.867684 + 20 +31.499938 + 30 +0.0 + 10 +101.867684 + 20 +13.499990 + 30 +0.0 + 10 +102.132268 + 20 +13.499990 + 30 +0.0 + 10 +102.132268 + 20 +31.499938 + 30 +0.0 + 0 +LWPOLYLINE + 5 +141 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +113.867467 + 20 +31.499938 + 30 +0.0 + 10 +113.867467 + 20 +13.499990 + 30 +0.0 + 10 +114.132050 + 20 +13.499990 + 30 +0.0 + 10 +114.132050 + 20 +31.499938 + 30 +0.0 + 0 +LWPOLYLINE + 5 +142 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +138.328508 + 20 +108.600130 + 30 +0.0 + 10 +138.328508 + 20 +85.599983 + 30 +0.0 + 10 +138.593092 + 20 +85.599983 + 30 +0.0 + 10 +138.593092 + 20 +108.600130 + 30 +0.0 + 0 +LWPOLYLINE + 5 +143 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +162.250046 + 20 +237.315789 + 30 +0.0 + 10 +162.250046 + 20 +237.051206 + 30 +0.0 + 10 +162.749757 + 20 +237.051206 + 30 +0.0 + 10 +162.749757 + 20 +237.315789 + 30 +0.0 + 0 +LWPOLYLINE + 5 +144 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +162.617465 + 20 +237.183497 + 30 +0.0 + 10 +162.617465 + 20 +224.016857 + 30 +0.0 + 10 +162.882048 + 20 +224.016857 + 30 +0.0 + 10 +162.882048 + 20 +237.183497 + 30 +0.0 + 0 +LWPOLYLINE + 5 +145 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +162.250046 + 20 +224.149149 + 30 +0.0 + 10 +162.250046 + 20 +223.884565 + 30 +0.0 + 10 +162.749757 + 20 +223.884565 + 30 +0.0 + 10 +162.749757 + 20 +224.149149 + 30 +0.0 + 0 +LWPOLYLINE + 5 +146 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +162.117754 + 20 +237.183497 + 30 +0.0 + 10 +162.117754 + 20 +224.016857 + 30 +0.0 + 10 +162.382338 + 20 +224.016857 + 30 +0.0 + 10 +162.382338 + 20 +237.183497 + 30 +0.0 + 0 +LWPOLYLINE + 5 +147 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +138.328508 + 20 +141.600183 + 30 +0.0 + 10 +138.328508 + 20 +118.600036 + 30 +0.0 + 10 +138.593092 + 20 +118.600036 + 30 +0.0 + 10 +138.593092 + 20 +141.600183 + 30 +0.0 + 0 +LWPOLYLINE + 5 +148 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +86.999858 + 20 +151.732381 + 30 +0.0 + 10 +86.999858 + 20 +151.467798 + 30 +0.0 + 10 +106.000248 + 20 +151.467798 + 30 +0.0 + 10 +106.000248 + 20 +151.732381 + 30 +0.0 + 0 +LWPOLYLINE + 5 +149 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +86.999858 + 20 +113.732116 + 30 +0.0 + 10 +86.999858 + 20 +113.467532 + 30 +0.0 + 10 +106.000248 + 20 +113.467532 + 30 +0.0 + 10 +106.000248 + 20 +113.732116 + 30 +0.0 + 0 +LWPOLYLINE + 5 +14a +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +77.867597 + 20 +31.600189 + 30 +0.0 + 10 +77.867597 + 20 +31.499938 + 30 +0.0 + 10 +78.132181 + 20 +31.499938 + 30 +0.0 + 10 +78.132181 + 20 +31.600189 + 30 +0.0 + 0 +LWPOLYLINE + 5 +14b +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +137.867554 + 20 +31.600189 + 30 +0.0 + 10 +137.867554 + 20 +31.499938 + 30 +0.0 + 10 +138.132137 + 20 +31.499938 + 30 +0.0 + 10 +138.132137 + 20 +31.600189 + 30 +0.0 + 0 +LWPOLYLINE + 5 +14c +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +101.999976 + 20 +31.632230 + 30 +0.0 + 10 +101.999976 + 20 +31.367647 + 30 +0.0 + 10 +113.999759 + 20 +31.367647 + 30 +0.0 + 10 +113.999759 + 20 +31.632230 + 30 +0.0 + 0 +LWPOLYLINE + 5 +14d +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +36.999810 + 20 +151.732381 + 30 +0.0 + 10 +36.999810 + 20 +151.467798 + 30 +0.0 + 10 +81.000224 + 20 +151.467798 + 30 +0.0 + 10 +81.000224 + 20 +151.732381 + 30 +0.0 + 0 +LWPOLYLINE + 5 +14e +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +6 + 70 +1 + 10 +153.593726 + 20 +171.693437 + 30 +0.0 + 10 +153.406658 + 20 +171.506368 + 30 +0.0 + 10 +158.632178 + 20 +166.280847 + 30 +0.0 + 10 +158.632178 + 20 +171.599904 + 30 +0.0 + 10 +158.367595 + 20 +171.599904 + 30 +0.0 + 10 +158.367595 + 20 +166.919567 + 30 +0.0 + 0 +LWPOLYLINE + 5 +14f +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +6 + 70 +1 + 10 +158.406351 + 20 +196.693461 + 30 +0.0 + 10 +153.367899 + 20 +191.655008 + 30 +0.0 + 10 +153.367899 + 20 +171.599904 + 30 +0.0 + 10 +153.632482 + 20 +171.599904 + 30 +0.0 + 10 +153.632482 + 20 +191.545455 + 30 +0.0 + 10 +158.593420 + 20 +196.506392 + 30 +0.0 + 0 +LWPOLYLINE + 5 +150 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +158.367595 + 20 +196.599928 + 30 +0.0 + 10 +158.367595 + 20 +191.600231 + 30 +0.0 + 10 +158.632178 + 20 +191.600231 + 30 +0.0 + 10 +158.632178 + 20 +196.599928 + 30 +0.0 + 0 +LWPOLYLINE + 5 +151 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +165.867911 + 20 +113.599824 + 30 +0.0 + 10 +165.867911 + 20 +31.600189 + 30 +0.0 + 10 +166.132494 + 20 +31.600189 + 30 +0.0 + 10 +166.132494 + 20 +113.599824 + 30 +0.0 + 0 +LWPOLYLINE + 5 +152 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +150.406841 + 20 +244.600096 + 30 +0.0 + 10 +150.406841 + 20 +221.599952 + 30 +0.0 + 10 +150.671424 + 20 +221.599952 + 30 +0.0 + 10 +150.671424 + 20 +244.600096 + 30 +0.0 + 0 +LWPOLYLINE + 5 +153 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +138.460800 + 20 +221.732244 + 30 +0.0 + 10 +138.460800 + 20 +221.467660 + 30 +0.0 + 10 +150.539133 + 20 +221.467660 + 30 +0.0 + 10 +150.539133 + 20 +221.732244 + 30 +0.0 + 0 +LWPOLYLINE + 5 +154 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +138.328508 + 20 +244.600096 + 30 +0.0 + 10 +138.328508 + 20 +221.599952 + 30 +0.0 + 10 +138.593092 + 20 +221.599952 + 30 +0.0 + 10 +138.593092 + 20 +244.600096 + 30 +0.0 + 0 +LWPOLYLINE + 5 +155 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +138.460800 + 20 +244.732388 + 30 +0.0 + 10 +138.460800 + 20 +244.467805 + 30 +0.0 + 10 +150.539133 + 20 +244.467805 + 30 +0.0 + 10 +150.539133 + 20 +244.732388 + 30 +0.0 + 0 +LWPOLYLINE + 5 +156 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +103.367851 + 20 +236.933382 + 30 +0.0 + 10 +103.367851 + 20 +224.266454 + 30 +0.0 + 10 +103.632434 + 20 +224.266454 + 30 +0.0 + 10 +103.632434 + 20 +236.933382 + 30 +0.0 + 0 +LWPOLYLINE + 5 +157 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +6 + 70 +1 + 10 +103.406607 + 20 +224.359990 + 30 +0.0 + 10 +98.632222 + 20 +219.586121 + 30 +0.0 + 10 +98.632222 + 20 +224.266454 + 30 +0.0 + 10 +98.367638 + 20 +224.266454 + 30 +0.0 + 10 +98.367638 + 20 +218.947401 + 30 +0.0 + 10 +103.593678 + 20 +224.172922 + 30 +0.0 + 0 +LWPOLYLINE + 5 +158 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +31.750000 + 20 +35.982340 + 30 +0.0 + 10 +31.750000 + 20 +35.717757 + 30 +0.0 + 10 +32.250227 + 20 +35.717757 + 30 +0.0 + 10 +32.250227 + 20 +35.982340 + 30 +0.0 + 0 +LWPOLYLINE + 5 +159 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +32.117935 + 20 +45.350243 + 30 +0.0 + 10 +32.117935 + 20 +35.850048 + 30 +0.0 + 10 +32.382518 + 20 +35.850048 + 30 +0.0 + 10 +32.382518 + 20 +45.350243 + 30 +0.0 + 0 +LWPOLYLINE + 5 +15a +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +31.750000 + 20 +45.482535 + 30 +0.0 + 10 +31.750000 + 20 +45.217952 + 30 +0.0 + 10 +32.250227 + 20 +45.217952 + 30 +0.0 + 10 +32.250227 + 20 +45.482535 + 30 +0.0 + 0 +LWPOLYLINE + 5 +15b +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +31.617708 + 20 +45.350243 + 30 +0.0 + 10 +31.617708 + 20 +35.850048 + 30 +0.0 + 10 +31.882292 + 20 +35.850048 + 30 +0.0 + 10 +31.882292 + 20 +45.350243 + 30 +0.0 + 0 +LWPOLYLINE + 5 +15c +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +59.999954 + 20 +113.732116 + 30 +0.0 + 10 +59.999954 + 20 +113.467532 + 30 +0.0 + 10 +77.999889 + 20 +113.467532 + 30 +0.0 + 10 +77.999889 + 20 +113.732116 + 30 +0.0 + 0 +LWPOLYLINE + 5 +15d +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +59.999954 + 20 +31.732481 + 30 +0.0 + 10 +59.999954 + 20 +31.467897 + 30 +0.0 + 10 +77.999889 + 20 +31.467897 + 30 +0.0 + 10 +77.999889 + 20 +31.732481 + 30 +0.0 + 0 +LWPOLYLINE + 5 +15e +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +137.999846 + 20 +31.732481 + 30 +0.0 + 10 +137.999846 + 20 +31.467897 + 30 +0.0 + 10 +155.999781 + 20 +31.467897 + 30 +0.0 + 10 +155.999781 + 20 +31.732481 + 30 +0.0 + 0 +LWPOLYLINE + 5 +15f +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +137.999846 + 20 +113.732116 + 30 +0.0 + 10 +137.999846 + 20 +113.467532 + 30 +0.0 + 10 +155.999781 + 20 +113.467532 + 30 +0.0 + 10 +155.999781 + 20 +113.732116 + 30 +0.0 + 0 +LWPOLYLINE + 5 +160 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +77.867597 + 20 +31.499938 + 30 +0.0 + 10 +77.867597 + 20 +0.000049 + 30 +0.0 + 10 +78.132181 + 20 +0.000049 + 30 +0.0 + 10 +78.132181 + 20 +31.499938 + 30 +0.0 + 0 +LWPOLYLINE + 5 +161 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +77.999889 + 20 +0.132341 + 30 +0.0 + 10 +77.999889 + 20 +-0.132243 + 30 +0.0 + 10 +98.000219 + 20 +-0.132243 + 30 +0.0 + 10 +98.000219 + 20 +0.132341 + 30 +0.0 + 0 +LWPOLYLINE + 5 +162 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +101.999976 + 20 +31.632230 + 30 +0.0 + 10 +101.999976 + 20 +31.367647 + 30 +0.0 + 10 +113.999759 + 20 +31.367647 + 30 +0.0 + 10 +113.999759 + 20 +31.632230 + 30 +0.0 + 0 +LWPOLYLINE + 5 +163 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +5 + 70 +1 + 10 +129.117701 + 20 +208.982116 + 30 +0.0 + 10 +129.117701 + 20 +181.717631 + 30 +0.0 + 10 +137.382311 + 20 +181.717631 + 30 +0.0 + 10 +137.382311 + 20 +181.849923 + 30 +0.0 + 10 +137.382311 + 20 +208.982116 + 30 +0.0 + 0 +LWPOLYLINE + 5 +164 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +129.382285 + 20 +208.717532 + 30 +0.0 + 10 +137.117728 + 20 +208.717532 + 30 +0.0 + 10 +137.117728 + 20 +181.982215 + 30 +0.0 + 10 +129.382285 + 20 +181.982215 + 30 +0.0 + 0 +LWPOLYLINE + 5 +165 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +98.000219 + 20 +0.132341 + 30 +0.0 + 10 +98.000219 + 20 +-0.132243 + 30 +0.0 + 10 +118.000034 + 20 +-0.132243 + 30 +0.0 + 10 +118.000034 + 20 +0.132341 + 30 +0.0 + 0 +LWPOLYLINE + 5 +166 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +101.867684 + 20 +31.499938 + 30 +0.0 + 10 +101.867684 + 20 +13.499990 + 30 +0.0 + 10 +102.132268 + 20 +13.499990 + 30 +0.0 + 10 +102.132268 + 20 +31.499938 + 30 +0.0 + 0 +LWPOLYLINE + 5 +167 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +113.867467 + 20 +31.499938 + 30 +0.0 + 10 +113.867467 + 20 +13.499990 + 30 +0.0 + 10 +114.132050 + 20 +13.499990 + 30 +0.0 + 10 +114.132050 + 20 +31.499938 + 30 +0.0 + 0 +LWPOLYLINE + 5 +168 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +155.999781 + 20 +113.732116 + 30 +0.0 + 10 +155.999781 + 20 +113.467532 + 30 +0.0 + 10 +166.000202 + 20 +113.467532 + 30 +0.0 + 10 +166.000202 + 20 +113.732116 + 30 +0.0 + 0 +LWPOLYLINE + 5 +169 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +155.999781 + 20 +31.732481 + 30 +0.0 + 10 +155.999781 + 20 +31.467897 + 30 +0.0 + 10 +166.000202 + 20 +31.467897 + 30 +0.0 + 10 +166.000202 + 20 +31.732481 + 30 +0.0 + 0 +LWPOLYLINE + 5 +16a +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +86.867566 + 20 +151.600089 + 30 +0.0 + 10 +86.867566 + 20 +113.599824 + 30 +0.0 + 10 +87.132149 + 20 +113.599824 + 30 +0.0 + 10 +87.132149 + 20 +151.600089 + 30 +0.0 + 0 +LWPOLYLINE + 5 +16b +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +93.999947 + 20 +211.732338 + 30 +0.0 + 10 +93.999947 + 20 +211.467754 + 30 +0.0 + 10 +137.999846 + 20 +211.467754 + 30 +0.0 + 10 +137.999846 + 20 +211.732338 + 30 +0.0 + 0 +LWPOLYLINE + 5 +16c +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +93.999947 + 20 +151.732381 + 30 +0.0 + 10 +93.999947 + 20 +151.467798 + 30 +0.0 + 10 +137.999846 + 20 +151.467798 + 30 +0.0 + 10 +137.999846 + 20 +151.732381 + 30 +0.0 + 0 +LWPOLYLINE + 5 +16d +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +80.750111 + 20 +74.982545 + 30 +0.0 + 10 +80.750111 + 20 +74.717962 + 30 +0.0 + 10 +107.750012 + 20 +74.717962 + 30 +0.0 + 10 +107.750012 + 20 +74.982545 + 30 +0.0 + 0 +LWPOLYLINE + 5 +16e +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +0.000000 + 20 +113.732116 + 30 +0.0 + 10 +0.000000 + 20 +113.467532 + 30 +0.0 + 10 +59.999954 + 20 +113.467532 + 30 +0.0 + 10 +59.999954 + 20 +113.732116 + 30 +0.0 + 0 +LWPOLYLINE + 5 +16f +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +80.750111 + 20 +66.982516 + 30 +0.0 + 10 +80.750111 + 20 +66.717933 + 30 +0.0 + 10 +107.750012 + 20 +66.717933 + 30 +0.0 + 10 +107.750012 + 20 +66.982516 + 30 +0.0 + 0 +LWPOLYLINE + 5 +170 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +151.000084 + 20 +113.732116 + 30 +0.0 + 10 +151.000084 + 20 +113.467532 + 30 +0.0 + 10 +160.999993 + 20 +113.467532 + 30 +0.0 + 10 +160.999993 + 20 +113.732116 + 30 +0.0 + 0 +LWPOLYLINE + 5 +171 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +151.000084 + 20 +151.732381 + 30 +0.0 + 10 +151.000084 + 20 +151.467798 + 30 +0.0 + 10 +160.999993 + 20 +151.467798 + 30 +0.0 + 10 +160.999993 + 20 +151.732381 + 30 +0.0 + 0 +LWPOLYLINE + 5 +172 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +95.867532 + 20 +249.599793 + 30 +0.0 + 10 +95.867532 + 20 +211.600046 + 30 +0.0 + 10 +96.132116 + 20 +211.600046 + 30 +0.0 + 10 +96.132116 + 20 +249.599793 + 30 +0.0 + 0 +LWPOLYLINE + 5 +173 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +24.000085 + 20 +31.732481 + 30 +0.0 + 10 +24.000085 + 20 +31.467897 + 30 +0.0 + 10 +35.999870 + 20 +31.467897 + 30 +0.0 + 10 +35.999870 + 20 +31.732481 + 30 +0.0 + 0 +LWPOLYLINE + 5 +174 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +150.406841 + 20 +141.600183 + 30 +0.0 + 10 +150.406841 + 20 +118.600036 + 30 +0.0 + 10 +150.671424 + 20 +118.600036 + 30 +0.0 + 10 +150.671424 + 20 +141.600183 + 30 +0.0 + 0 +LWPOLYLINE + 5 +175 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +138.460800 + 20 +118.732328 + 30 +0.0 + 10 +138.460800 + 20 +118.467744 + 30 +0.0 + 10 +150.539133 + 20 +118.467744 + 30 +0.0 + 10 +150.539133 + 20 +118.732328 + 30 +0.0 + 0 +LWPOLYLINE + 5 +176 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +106.000248 + 20 +249.732084 + 30 +0.0 + 10 +106.000248 + 20 +249.467501 + 30 +0.0 + 10 +118.999971 + 20 +249.467501 + 30 +0.0 + 10 +118.999971 + 20 +249.732084 + 30 +0.0 + 0 +LWPOLYLINE + 5 +177 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +138.460800 + 20 +141.732475 + 30 +0.0 + 10 +138.460800 + 20 +141.467892 + 30 +0.0 + 10 +150.539133 + 20 +141.467892 + 30 +0.0 + 10 +150.539133 + 20 +141.732475 + 30 +0.0 + 0 +LWPOLYLINE + 5 +178 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +118.000034 + 20 +0.132341 + 30 +0.0 + 10 +118.000034 + 20 +-0.132243 + 30 +0.0 + 10 +137.999846 + 20 +-0.132243 + 30 +0.0 + 10 +137.999846 + 20 +0.132341 + 30 +0.0 + 0 +LWPOLYLINE + 5 +179 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +137.867554 + 20 +31.499938 + 30 +0.0 + 10 +137.867554 + 20 +0.000049 + 30 +0.0 + 10 +138.132137 + 20 +0.000049 + 30 +0.0 + 10 +138.132137 + 20 +31.499938 + 30 +0.0 + 0 +LWPOLYLINE + 5 +17a +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +36.999810 + 20 +211.732338 + 30 +0.0 + 10 +36.999810 + 20 +211.467754 + 30 +0.0 + 10 +81.000224 + 20 +211.467754 + 30 +0.0 + 10 +81.000224 + 20 +211.732338 + 30 +0.0 + 0 +LWPOLYLINE + 5 +17b +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +163.367805 + 20 +46.509346 + 30 +0.0 + 10 +163.367805 + 20 +41.509134 + 30 +0.0 + 10 +163.632388 + 20 +41.509134 + 30 +0.0 + 10 +163.632388 + 20 +46.509346 + 30 +0.0 + 0 +LWPOLYLINE + 5 +17c +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +163.367805 + 20 +103.690868 + 30 +0.0 + 10 +163.367805 + 20 +98.690659 + 30 +0.0 + 10 +163.632388 + 20 +98.690659 + 30 +0.0 + 10 +163.632388 + 20 +103.690868 + 30 +0.0 + 0 +LWPOLYLINE + 5 +17d +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +158.367595 + 20 +98.690659 + 30 +0.0 + 10 +158.367595 + 20 +83.782007 + 30 +0.0 + 10 +158.632178 + 20 +83.782007 + 30 +0.0 + 10 +158.632178 + 20 +98.690659 + 30 +0.0 + 0 +LWPOLYLINE + 5 +17e +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +163.406563 + 20 +103.784404 + 30 +0.0 + 10 +158.406351 + 20 +98.784708 + 30 +0.0 + 10 +158.593420 + 20 +98.597123 + 30 +0.0 + 10 +163.593632 + 20 +103.597336 + 30 +0.0 + 0 +LWPOLYLINE + 5 +17f +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +163.367805 + 20 +83.782007 + 30 +0.0 + 10 +163.367805 + 20 +78.781795 + 30 +0.0 + 10 +163.632388 + 20 +78.781795 + 30 +0.0 + 10 +163.632388 + 20 +83.782007 + 30 +0.0 + 0 +LWPOLYLINE + 5 +180 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +158.593420 + 20 +83.875540 + 30 +0.0 + 10 +158.406351 + 20 +83.688472 + 30 +0.0 + 10 +163.406563 + 20 +78.688262 + 30 +0.0 + 10 +163.593632 + 20 +78.875330 + 30 +0.0 + 0 +LWPOLYLINE + 5 +181 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +6 + 70 +1 + 10 +98.367638 + 20 +242.252954 + 30 +0.0 + 10 +98.367638 + 20 +236.933382 + 30 +0.0 + 10 +98.632222 + 20 +236.933382 + 30 +0.0 + 10 +98.632222 + 20 +241.613718 + 30 +0.0 + 10 +103.406607 + 20 +236.839849 + 30 +0.0 + 10 +103.593678 + 20 +237.026917 + 30 +0.0 + 0 +LWPOLYLINE + 5 +182 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +137.999846 + 20 +113.732116 + 30 +0.0 + 10 +137.999846 + 20 +113.467532 + 30 +0.0 + 10 +151.000084 + 20 +113.467532 + 30 +0.0 + 10 +151.000084 + 20 +113.732116 + 30 +0.0 + 0 +LWPOLYLINE + 5 +183 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +96.999764 + 20 +113.732116 + 30 +0.0 + 10 +96.999764 + 20 +113.467532 + 30 +0.0 + 10 +118.999971 + 20 +113.467532 + 30 +0.0 + 10 +118.999971 + 20 +113.732116 + 30 +0.0 + 0 +LWPOLYLINE + 5 +184 +100 +AcDbEntity + 8 +Cut + 62 +7 +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +77.999889 + 20 +113.732116 + 30 +0.0 + 10 +77.999889 + 20 +113.467532 + 30 +0.0 + 10 +96.999764 + 20 +113.467532 + 30 +0.0 + 10 +96.999764 + 20 +113.732116 + 30 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary + 3 +ACAD_GROUP +350 +D + 3 +ACAD_MLINESTYLE +350 +17 + 0 +DICTIONARY + 5 +D +330 +C +100 +AcDbDictionary + 0 +DICTIONARY + 5 +1A +330 +C +100 +AcDbDictionary + 0 +DICTIONARY + 5 +17 +330 +C +100 +AcDbDictionary + 3 +STANDARD +350 +18 + 0 +DICTIONARY + 5 +19 +330 +C +100 +AcDbDictionary + 0 +ENDSEC + 0 +EOF diff --git a/dsn_python/README.md b/dsn_python/README.md new file mode 100644 index 0000000000000000000000000000000000000000..63e0ea4da0e1235778c8a631cf0c461145cd456a --- /dev/null +++ b/dsn_python/README.md @@ -0,0 +1 @@ +# dsn_python diff --git a/dsn_python/__pycache__/dsn_geo.cpython-36.pyc b/dsn_python/__pycache__/dsn_geo.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ab551407901219c9c24b12763e9c676a22a1721e Binary files /dev/null and b/dsn_python/__pycache__/dsn_geo.cpython-36.pyc differ diff --git a/dsn_python/__pycache__/dsn_load.cpython-36.pyc b/dsn_python/__pycache__/dsn_load.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bb0e1f136c58ffd77f37de75d42a6c359875f369 Binary files /dev/null and b/dsn_python/__pycache__/dsn_load.cpython-36.pyc differ diff --git a/dsn_python/__pycache__/dsn_module.cpython-36.pyc b/dsn_python/__pycache__/dsn_module.cpython-36.pyc index 765aff856af9170e04400c4ecb60a3633bba594c..67dd4c746bbcda5080e33f75d4063229c4e527e9 100644 Binary files a/dsn_python/__pycache__/dsn_module.cpython-36.pyc and b/dsn_python/__pycache__/dsn_module.cpython-36.pyc differ diff --git a/dsn_python/__pycache__/dsn_net.cpython-36.pyc b/dsn_python/__pycache__/dsn_net.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5514cb26c390306b35fc0cfd188af083996a7546 Binary files /dev/null and b/dsn_python/__pycache__/dsn_net.cpython-36.pyc differ diff --git a/dsn_python/__pycache__/dsnwritier.cpython-36.pyc b/dsn_python/__pycache__/dsnwritier.cpython-36.pyc index e0f4d92ed1c145a9a3eba0cd9019a8b1c13527ff..692145d1fb7d6ff1e429023c7a121d0773adbee3 100644 Binary files a/dsn_python/__pycache__/dsnwritier.cpython-36.pyc and b/dsn_python/__pycache__/dsnwritier.cpython-36.pyc differ diff --git a/dsn_python/dsn_geo.py b/dsn_python/dsn_geo.py new file mode 100644 index 0000000000000000000000000000000000000000..2fd2ea3e2eae3804469d4d2bef6ace671087d962 --- /dev/null +++ b/dsn_python/dsn_geo.py @@ -0,0 +1,112 @@ + + +from pykicad.sexpr import * +import numpy as np + +class load_drawing(): + def __init__(self,afile): + import ezdxf + self.dwg=ezdxf.readfile(afile) + self.msp=self.dwg.modelspace() + + def load_all(self): + return [self.load_line,self.load_polygon] + + def load_line(self): + startlist=[] + endlist=[] + line_list=[] + for e in self.msp.query('LINE'): + startlist.append(e.dxf.start[:2]) + endlist.append(e.dxf.end[:2]) + + for i in range(len(startlist)): + line_list.append(startlist[i]) + line_list.append(endlist[i]) + + line_list=np.array(line_list) + line_list[:,1]*=-1 + line_list*=1000 + line_list=line_list.flatten() + line_list=list(line_list) + + return line_list + def load_polygon(self): + pts_list=[] + for e in self.msp.query('LWPOLYLINE'): + pts_list.append(np.array(e.get_points())) + + for i in range(len(pts_list)): + pts_list[i]=pts_list[i][:,:2] + pts_list[i][:,1]*=-1 + + ##Unit = um + pts_list[i]=pts_list[i]*1000 + pts_list[i]=pts_list[i].flatten() + pts_list[i]=list(pts_list[i]) + return pts_list + def load_line_as_polygon(self): + pts_list=self.load_polygon() + ply_list=[] + for i in range(len(pts_list)): + for j in range(len(pts_list[i])): + ply_list.append(pts_list[i][j]) + return ply_list + +class Boundary(AST): + tag='boundary' + schema={ + 'path pcb':{ + '0':{ + '_parser':integer, + '_attr':'brd_index' + }, + '1':{ + '_parser': number, + '_attr': 'path' + }, + + } + } + + index_ctr=0 + def __init__(self,path,brd_index=None): + brd_index=Boundary.index_ctr + Boundary.index_ctr+=1 + + super(Boundary,self).__init__(path=path,brd_index=brd_index) + + + +class Keepout(AST): + tag='keepout' + schema={ + '0':{ + '0':{ + '_parser':text, + '_attr':'name' + }, + + ' ':{ + '0': { + '_parser':text, + '_attr':'shape' + }, + '1':{ + '_parser':text, + '_attr':'typex' + }, + '2':{ + '_parser':integer, + '_attr':'brd_index' + }, + '3':{ + '_parser': number, + '_attr':'path' + }, + }, + }, + } + def __init__(self,path,name='\"\"',brd_index=0,shape='polygon',typex='signal'): + + super(Keepout,self).__init__(path=path,name=name,brd_index=brd_index,shape=shape,typex=typex) \ No newline at end of file diff --git a/dsn_python/dsn_geo.pyc b/dsn_python/dsn_geo.pyc new file mode 100644 index 0000000000000000000000000000000000000000..84c49e57ebd7afd674ad4157c2dd644b6fc12aeb Binary files /dev/null and b/dsn_python/dsn_geo.pyc differ diff --git a/dsn_python/dsn_module.py b/dsn_python/dsn_module.py index a4bfd5af8e7334856fafb77d4d4340526ac589d8..0b993d50c88d9e491607f6aa02d6360541aebc37 100644 --- a/dsn_python/dsn_module.py +++ b/dsn_python/dsn_module.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 + from pykicad.sexpr import * class Component(AST): @@ -80,6 +80,48 @@ class Pin(AST): def __init__(self,pin_index=None,pin_at=None,pin_type='Round[A]Pad_1524_um'): super(Pin,self).__init__(pin_type=pin_type,pin_index=pin_index,pin_at=pin_at) +class Shape(AST): + tag='shape' + schema={ + ' ':{ + '0':{ + '_parser': text, + '_attr':'shape' + + }, + '1':{ + '_parser': text, + '_attr':'layer' + }, + '2':{ + '_parser': integer, + '_attr': 'size' + } + } + } + def __init__(self,shape='circle',layer=None,size=1524): + super(Shape,self).__init__(shape=shape,layer=layer,size=size) +class Padstack(AST): + tag='padstack' + schema={ + '0':{ + '_parser': text, + '_attr': 'pin_type' + }, + '1':{ + 'shape':{ + '_parser':Shape, + '_multiple':True + }, + }, + + 'attach':{ + '_parser': text + } + } + def __init__(self,pin_type='Round[A]Pad_1524_um',shape=None,attach='off'): + shape=self.init_list(shape,[]) + super(Padstack,self).__init__(pin_type=pin_type,shape=shape,attach=attach) class Footprint(AST): tag='image' diff --git a/dsn_python/dsn_net.py b/dsn_python/dsn_net.py new file mode 100644 index 0000000000000000000000000000000000000000..0c447e7b575abd0f58e55891860d61261f984721 --- /dev/null +++ b/dsn_python/dsn_net.py @@ -0,0 +1,58 @@ + +from pykicad.sexpr import * + +class Net(AST): + tag='net' + schema={ + '0':{ + '_parser': text, + '_attr': 'net_name' + }, + '1':{ + 'pins':{ + '0':{ + '_parser':text +text, + '_attr':'conn_pins' + }, + } + } + } + def __init__(self,net_name,conn_pins=None): + super(Net,self).__init__(net_name=net_name,conn_pins=conn_pins) + +class NetClass(AST): + tag='class' + schema={ + '0':{ + '0':{ + '_parser':text, + '_attr':'net_class_name' + }, + '1':{ + '_parser':text+text, + '_attr':'nets_name' + }, + }, + 'circuit':{ + '0':{ + 'use_via':{ + '_parser':text, + '_attr':'via_name' + } + } + }, + 'rule':{ + 'width':{ + '_parser':integer + }, + 'clearance':{ + '_parser': number + } + } + } + def __init__(self,net_class_name='default',nets_name=None, + via_name=None,width=1000,clearance=200.1): + + super(NetClass,self).__init__(net_class_name=net_class_name,nets_name=nets_name, + via_name=via_name,width=width,clearance=clearance) + diff --git a/dsn_python/dsnwritier.py b/dsn_python/dsnwritier.py index 8a7b15395f5bde1cb172e4f041653a1e57148cc5..f31eea043a9fad1178b5b59d5e60f4f3e2b36648 100644 --- a/dsn_python/dsnwritier.py +++ b/dsn_python/dsnwritier.py @@ -1,8 +1,10 @@ #!/usr/bin/env python3 from pykicad.sexpr import * from dsn_rule import * -from dsn_module import Component,Footprint +from dsn_module import Component,Footprint, Padstack import dsn_module as module +from dsn_net import * +from dsn_geo import * class Parser(AST): tag = 'parser' @@ -59,65 +61,6 @@ class Layer(AST): Layer.index_ctr+=1 super(Layer,self).__init__(name=name,typex=typex,index=index) - -class Boundary(AST): - tag='boundary' - schema={ - 'path pcb':{ - '0':{ - '_parser':integer, - '_attr':'brd_index' - }, - '1':{ - '_parser': number, - '_attr': 'path' - }, - - } - } - - index_ctr=0 - def __init__(self,path,brd_index=None): - brd_index=Boundary.index_ctr - Boundary.index_ctr+=1 - - super(Boundary,self).__init__(path=path,brd_index=brd_index) - -class Keepout(AST): - tag='keepout' - schema={ - '0':{ - '0':{ - '_parser':text, - '_attr':'name' - }, - - ' ':{ - '0': { - '_parser':text, - '_attr':'shape' - }, - '1':{ - '_parser':text, - '_attr':'typex' - }, - '2':{ - '_parser':integer, - '_attr':'brd_index' - }, - '3':{ - '_parser': number, - '_attr':'path' - }, - }, - }, - } - def __init__(self,path,name='\"\"',brd_index=0,shape='polygon',typex='signal'): - - super(Keepout,self).__init__(path=path,name=name,brd_index=brd_index,shape=shape,typex=typex) - - - class Dsn(AST): tag = 'PCB "kicad_board"' schema = { @@ -147,7 +90,7 @@ class Dsn(AST): '1':{ 'boundary':{ '_parser':Boundary, - '_multiple':True + '_multiple':False }, }, '2':{ @@ -187,13 +130,32 @@ class Dsn(AST): '_parser': Footprint, '_multiple': True }, - } + }, - # 'padstack':{ - # '_parser':Padstack, - # '_multiple': True - # } + '1':{ + '_parser':Padstack, + '_multiple': True, + '_attr':'padstack' + } + } + }, + '6':{ + 'network':{ + 'net':{ + '_parser':Net, + '_multiple':True + }, + 'netclass':{ + '_parser':NetClass, + '_multiple':True + } + } + }, + '7':{ + 'wiring':{ + '_parser':text, #not available before auto-routing, code can be modificed if want to set route from script manually + } } @@ -211,7 +173,11 @@ class Dsn(AST): via_txt='"Via[0-1]_800:400_um"', rule=None, component=None, - image=None + image=None, + padstack=None, + net=None, + netclass=None, + wiring= None ): layers=self.init_list(layers,[]) @@ -220,7 +186,9 @@ class Dsn(AST): keepout=self.init_list(keepout,[]) component=self.init_list(component,[]) image=self.init_list(image,[]) - + padstack=self.init_list(padstack,[]) + net=self.init_list(net,[]) + net=self.init_list(netclass,[]) super(Dsn,self).__init__( resolution=resolution, @@ -232,7 +200,11 @@ class Dsn(AST): via_txt=via_txt, rule=rule, component=component, - image=image + image=image, + padstack=padstack, + net=net, + netclass=netclass, + wiring=wiring ) def to_file(self, path): diff --git a/dsn_python/gui_defaults.par b/dsn_python/gui_defaults.par new file mode 100644 index 0000000000000000000000000000000000000000..7aa8af6713ad9c87e9faedc639eef28d04c6c288 --- /dev/null +++ b/dsn_python/gui_defaults.par @@ -0,0 +1,235 @@ + +(gui_defaults + (windows + (board_frame + visible + (bounds + 351 29 1150 916 + ) + ) + (color_manager + not_visible + (bounds + 0 600 1110 134 + ) + ) + (layer_visibility + not_visible + (bounds + 0 450 369 162 + ) + ) + (object_visibility + not_visible + (bounds + 0 550 405 396 + ) + ) + (display_miscellanious + not_visible + (bounds + 0 350 241 333 + ) + ) + (snapshots + not_visible + (bounds + 0 250 230 255 + ) + ) + (select_parameter + not_visible + (bounds + 0 0 246 467 + ) + ) + (route_parameter + not_visible + (bounds + 0 100 261 542 + ) + ) + (manual_rules + not_visible + (bounds + 0 27 284 196 + ) + ) + (route_details + not_visible + (bounds + 0 27 263 240 + ) + ) + (move_parameter + not_visible + (bounds + 0 50 304 139 + ) + ) + (clearance_matrix + not_visible + (bounds + 0 150 470 257 + ) + ) + (via_rules + not_visible + (bounds + 50 150 335 450 + ) + ) + (edit_vias + not_visible + (bounds + 100 150 413 103 + ) + ) + (edit_net_rules + not_visible + (bounds + 100 200 913 103 + ) + ) + (assign_net_rules + not_visible + (bounds + 100 250 213 84 + ) + ) + (padstack_info + not_visible + (bounds + 100 30 0 0 + ) + ) + (package_info + not_visible + (bounds + 200 30 0 0 + ) + ) + (component_info + not_visible + (bounds + 300 30 0 0 + ) + ) + (net_info + not_visible + (bounds + 350 30 0 0 + ) + ) + (incompletes_info + not_visible + (bounds + 400 30 0 0 + ) + ) + (violations_info + not_visible + (bounds + 500 30 0 0 + ) + ) + ) + (colors + (background + 204 204 204 + ) + (hilight 1.0 + 230 255 255 + ) + (incompletes 1.0 + 255 255 255 + ) + (outline + 0 0 0 + ) + (component_front + 0 0 255 + ) + (component_back + 255 0 0 + ) + (violations + 255 0 255 + ) + (length_matching 1.0 + 0 255 0 + ) + (traces 1.0 + 255 0 0 + 0 0 255 + ) + (fixed_traces 1.0 + 255 0 0 + 0 0 255 + ) + (vias 1.0 + 200 200 0 + 200 200 0 + ) + (fixed_vias 1.0 + 200 200 0 + 200 200 0 + ) + (pins 1.0 + 150 50 0 + 160 80 0 + ) + (conduction 1.0 + 0 150 0 + 100 100 0 + ) + (keepout 1.0 + 0 110 110 + 0 100 160 + ) + (via_keepout 1.0 + 100 100 100 + 100 100 100 + ) + ) + (parameter + (selection_layers + all_visible + ) + (selectable_items + TRACES VIAS PINS FIXED UNFIXED + ) + (via_snap_to_smd_center + on + ) + (route_mode + dynamic + ) + (shove_enabled + on + ) + (drag_components_enabled + on + ) + (hilight_routing_obstacle + off + ) + (pull_tight_region + 2147483647 + ) + (pull_tight_accuracy + 500 + ) + (clearance_compensation + off + ) + (ignore_conduction_areas + on + ) + (automatic_layer_dimming + 0.7 + ) + (deselected_snapshot_attributes + ) + ) +) \ No newline at end of file diff --git a/dsn_python/gui_defaults.par.bak b/dsn_python/gui_defaults.par.bak new file mode 100644 index 0000000000000000000000000000000000000000..fb9864927e3f639fb75d819dda45fc40219c138f --- /dev/null +++ b/dsn_python/gui_defaults.par.bak @@ -0,0 +1,235 @@ + +(gui_defaults + (windows + (board_frame + visible + (bounds + 120 27 1150 916 + ) + ) + (color_manager + not_visible + (bounds + 0 600 1110 134 + ) + ) + (layer_visibility + not_visible + (bounds + 0 450 369 162 + ) + ) + (object_visibility + not_visible + (bounds + 0 550 395 396 + ) + ) + (display_miscellanious + not_visible + (bounds + 0 350 241 333 + ) + ) + (snapshots + not_visible + (bounds + 0 250 230 255 + ) + ) + (select_parameter + not_visible + (bounds + 0 0 246 467 + ) + ) + (route_parameter + not_visible + (bounds + 0 100 261 542 + ) + ) + (manual_rules + not_visible + (bounds + 0 27 284 196 + ) + ) + (route_details + not_visible + (bounds + 0 27 263 240 + ) + ) + (move_parameter + not_visible + (bounds + 0 50 304 139 + ) + ) + (clearance_matrix + not_visible + (bounds + 0 150 470 257 + ) + ) + (via_rules + not_visible + (bounds + 50 150 335 450 + ) + ) + (edit_vias + not_visible + (bounds + 100 150 413 103 + ) + ) + (edit_net_rules + not_visible + (bounds + 100 200 913 103 + ) + ) + (assign_net_rules + not_visible + (bounds + 100 250 213 84 + ) + ) + (padstack_info + not_visible + (bounds + 100 30 0 0 + ) + ) + (package_info + not_visible + (bounds + 200 30 0 0 + ) + ) + (component_info + not_visible + (bounds + 300 30 0 0 + ) + ) + (net_info + not_visible + (bounds + 350 30 0 0 + ) + ) + (incompletes_info + not_visible + (bounds + 400 30 0 0 + ) + ) + (violations_info + not_visible + (bounds + 500 30 0 0 + ) + ) + ) + (colors + (background + 255 255 255 + ) + (hilight 1.0 + 230 255 255 + ) + (incompletes 1.0 + 255 255 255 + ) + (outline + 0 0 0 + ) + (component_front + 0 0 255 + ) + (component_back + 255 0 0 + ) + (violations + 255 0 255 + ) + (length_matching 1.0 + 0 255 0 + ) + (traces 1.0 + 255 0 0 + 0 0 255 + ) + (fixed_traces 1.0 + 255 0 0 + 0 0 255 + ) + (vias 1.0 + 200 200 0 + 200 200 0 + ) + (fixed_vias 1.0 + 200 200 0 + 200 200 0 + ) + (pins 1.0 + 150 50 0 + 160 80 0 + ) + (conduction 1.0 + 0 150 0 + 100 100 0 + ) + (keepout 1.0 + 0 110 110 + 0 100 160 + ) + (via_keepout 1.0 + 100 100 100 + 100 100 100 + ) + ) + (parameter + (selection_layers + all_visible + ) + (selectable_items + TRACES VIAS PINS FIXED UNFIXED + ) + (via_snap_to_smd_center + on + ) + (route_mode + dynamic + ) + (shove_enabled + on + ) + (drag_components_enabled + on + ) + (hilight_routing_obstacle + off + ) + (pull_tight_region + 2147483647 + ) + (pull_tight_accuracy + 500 + ) + (clearance_compensation + off + ) + (ignore_conduction_areas + on + ) + (automatic_layer_dimming + 0.7 + ) + (deselected_snapshot_attributes + ) + ) +) \ No newline at end of file diff --git a/dsn_python/test_dsn_python.py b/dsn_python/test_dsn_python.py index 86f6e431478fac39ead12aa1262c9275cd0c95e8..85154a48512a3a5ff962ce9fa33b6a534a65b057 100644 --- a/dsn_python/test_dsn_python.py +++ b/dsn_python/test_dsn_python.py @@ -5,6 +5,7 @@ from pykicad import pcb test=dsnwritier.Dsn() ############################################################################### +###manually layers=[ dsnwritier.Layer('F.Cu'), dsnwritier.Layer('B.Cu') @@ -21,6 +22,7 @@ bdata=[137735, -31864.8, 165736, -31864.8, 165736, -113335, 137735, -113335, 264.583, -31864.8, 78264.5, -31864.8, 78264.5, -264.632, 137735, -264.632, 137735, -31864.8] + kdata1=[138725, -221865, 138725, -244336, 150275, -244336, 150275, -221865, 138725, -221865] kdata2=[98235.3, -224531, 98764.5, -224531, 98764.5, -219905, 103236, -224376, @@ -31,13 +33,34 @@ kdata2=[98235.3, -224531, 98764.5, -224531, 98764.5, -219905, 103236, -224376 98235.3, -224531] ####################################################################################### +###load from library +# drawingclass=dsnwritier.load_drawing('/home/jingyan/Documents/summer_intern_lemur/roco_electrical/kicad_test.dxf') +# bdata=drawingclass.load_polygon()[0] + +drawingclass=dsnwritier.load_drawing('/home/jingyan/Documents/summer_intern_lemur/roco_electrical/dsn_line_test.dxf') +ddata=drawingclass.load_polygon() +bdata=ddata[0] #first element is boundary + +keepout=[] #load all the rest as outline + +for i in range(1,len(ddata)): + kdata=dsnwritier.Keepout(ddata[i]) + keepout.append(kdata) +####################################################################################### parsers= dsnwritier.Parser() boundary=dsnwritier.Boundary(bdata) +############# keepout=[ dsnwritier.Keepout(kdata1), dsnwritier.Keepout(kdata2)] +############# +keepout=[] #load all the rest as outline + +for i in range(1,len(ddata)): + kdata=dsnwritier.Keepout(ddata[i]) + keepout.append(kdata) rule=dsnwritier.Rule() clearance=[ @@ -45,11 +68,11 @@ clearance=[ dsnwritier.Clearance(200.1,'default_smd'), dsnwritier.Clearance(50,'smd_smd')] rule.clearance=clearance - +########## component=[dsnwritier.Component('U1',[103000,48000],name='"DEV"'), dsnwritier.Component('J1',[103000,48000],name='"DEV"')] - +############### image1_outline=[ dsnwritier.module.Outline(width=120,outline_start=[-7620, 11430],outline_end=[7540, 11430]), dsnwritier.module.Outline(width=120,outline_start=[-7620, 11430],outline_end=[7540, -13570]), @@ -62,6 +85,17 @@ image1_pin=[ image1=dsnwritier.Footprint('U1',image1_outline,image1_pin) image=[image1] +############### +pin_shape1=[dsnwritier.module.Shape(layer='F.Cu'), + dsnwritier.module.Shape(layer='B.Cu')] +padstack1=dsnwritier.Padstack(shape=pin_shape1,attach='off') +pin_shape2=[dsnwritier.module.Shape(layer='F.Cu',size=800), + dsnwritier.module.Shape(layer='B.Cu',size=800)] +padstack2=dsnwritier.Padstack(pin_type='"Via[0-1]_800:400_um"',shape=pin_shape2,attach='off') +############## +net1=dsnwritier.Net('3v3',conn_pins=['U1-3','J1-1']) +net2=dsnwritier.Net('VIN',conn_pins='U1-1') +netclass1=dsnwritier.NetClass(net_class_name='default',nets_name=['3v3','GND','VIN'],via_name='Via[0-1]_800:400_um') ######################################################################################## test.parser=parsers @@ -71,5 +105,8 @@ test.keepout=keepout test.rule=rule test.component=component test.image=image +test.padstack=[padstack1,padstack2] +test.net=[net1,net2] +test.netclass=netclass1 test.to_file('testdsn.dsn') diff --git a/dsn_python/testdsn.dsn b/dsn_python/testdsn.dsn index 14da9ab6b506d80a9a8993b163bfe01890d10c11..080354484a6b28f00d206b8b263533d01a894246 100644 --- a/dsn_python/testdsn.dsn +++ b/dsn_python/testdsn.dsn @@ -17,11 +17,271 @@ (property (index 1))) (boundary - (path pcb 0 137735 -31864.8000000000 165736 -31864.8000000000 165736 -113335 137735 -113335 137735 -113864 160735 -113864 160735 -151336 150736 -151336 150736 -151865 160735 -151865 160735 -211335 150736 -211335 150736 -211865 169735 -211865 169735 -249335 96264.4000000000 -249335 96264.4000000000 -211865 138264 -211865 138264 -211335 37264.4000000000 -211335 37264.4000000000 -151865 138264 -151865 138264 -151336 87264.4000000000 -151336 87264.4000000000 -113864 119265 -113864 119265 -113335 264.5830000000 -113335 264.5830000000 -31864.8000000000 78264.5000000000 -31864.8000000000 78264.5000000000 -264.6320000000 137735 -264.6320000000 137735 -31864.8000000000)) + (path pcb 0 -26696.2760000000 -280310.9110000000 216684.7830000000 -280310.9110000000 216684.7830000000 19577.2840000000 -26696.2760000000 19577.2840000000)) (keepout "" - ( polygon signal 0 138725 -221865 138725 -244336 150275 -244336 150275 -221865 138725 -221865)) + ( polygon signal 0 106000.2480000000 -113732.1160000000 106000.2480000000 -113467.5320000000 118999.9710000000 -113467.5320000000 118999.9710000000 -113732.1160000000)) (keepout "" - ( polygon signal 0 98235.3000000000 -224531 98764.5000000000 -224531 98764.5000000000 -219905 103236 -224376 103236 -236824 98764.5000000000 -241294 98764.5000000000 -236669 98235.3000000000 -236669 98235.3000000000 -242572 103610 -237198 103765 -237198 103765 -237043 103874 -236933 103765 -236824 103765 -224376 103874 -224266 103765 -224157 103765 -224002 103610 -224002 98235.3000000000 -218628 98235.3000000000 -224531)) + ( polygon signal 0 106000.2480000000 -151732.3810000000 106000.2480000000 -151467.7980000000 118999.9710000000 -151467.7980000000 118999.9710000000 -151732.3810000000)) +(keepout "" + ( polygon signal 0 35999.8700000000 -31732.4810000000 35999.8700000000 -31467.8970000000 59999.9540000000 -31467.8970000000 59999.9540000000 -31732.4810000000)) +(keepout "" + ( polygon signal 0 0.0000000000 -31732.4810000000 0.0000000000 -31467.8970000000 24000.0850000000 -31467.8970000000 24000.0850000000 -31732.4810000000)) +(keepout "" + ( polygon signal 0 106000.2480000000 -18132.2620000000 106000.2480000000 -17867.6790000000 110000.0050000000 -17867.6790000000 110000.0050000000 -18132.2620000000)) +(keepout "" + ( polygon signal 0 106000.2480000000 -27132.2230000000 106000.2480000000 -26867.6400000000 110000.0050000000 -26867.6400000000 110000.0050000000 -27132.2230000000)) +(keepout "" + ( polygon signal 0 105867.9570000000 -26999.9310000000 105867.9570000000 -17999.9710000000 106132.5400000000 -17999.9710000000 106132.5400000000 -26999.9310000000)) +(keepout "" + ( polygon signal 0 151000.0840000000 -151732.3810000000 151000.0840000000 -151467.7980000000 160999.9930000000 -151467.7980000000 160999.9930000000 -151732.3810000000)) +(keepout "" + ( polygon signal 0 151000.0840000000 -211732.3380000000 151000.0840000000 -211467.7540000000 160999.9930000000 -211467.7540000000 160999.9930000000 -211732.3380000000)) +(keepout "" + ( polygon signal 0 7250.2040000000 -61800.4030000000 7250.2040000000 -61535.8190000000 7749.9150000000 -61535.8190000000 7749.9150000000 -61800.4030000000)) +(keepout "" + ( polygon signal 0 7617.6230000000 -61668.1110000000 7617.6230000000 -46259.2330000000 7882.2060000000 -46259.2330000000 7882.2060000000 -61668.1110000000)) +(keepout "" + ( polygon signal 0 7250.2040000000 -46391.5240000000 7250.2040000000 -46126.9410000000 7749.9150000000 -46126.9410000000 7749.9150000000 -46391.5240000000)) +(keepout "" + ( polygon signal 0 7117.9120000000 -61668.1110000000 7117.9120000000 -46259.2330000000 7382.4950000000 -46259.2330000000 7382.4950000000 -61668.1110000000)) +(keepout "" + ( polygon signal 0 7250.2040000000 -99073.0640000000 7250.2040000000 -98808.4800000000 7749.9150000000 -98808.4800000000 7749.9150000000 -99073.0640000000)) +(keepout "" + ( polygon signal 0 7617.6230000000 -98940.7720000000 7617.6230000000 -83531.8940000000 7882.2060000000 -83531.8940000000 7882.2060000000 -98940.7720000000)) +(keepout "" + ( polygon signal 0 7250.2040000000 -83664.1860000000 7250.2040000000 -83399.6020000000 7749.9150000000 -83399.6020000000 7749.9150000000 -83664.1860000000)) +(keepout "" + ( polygon signal 0 7117.9120000000 -98940.7720000000 7117.9120000000 -83531.8940000000 7382.4950000000 -83531.8940000000 7382.4950000000 -98940.7720000000)) +(keepout "" + ( polygon signal 0 169867.6670000000 -249599.7930000000 169867.6670000000 -211600.0460000000 170132.2510000000 -211600.0460000000 170132.2510000000 -249599.7930000000)) +(keepout "" + ( polygon signal 0 137999.8460000000 -249732.0840000000 137999.8460000000 -249467.5010000000 151000.0840000000 -249467.5010000000 151000.0840000000 -249732.0840000000)) +(keepout "" + ( polygon signal 0 106000.2480000000 -211732.3380000000 106000.2480000000 -211467.7540000000 118999.9710000000 -211467.7540000000 118999.9710000000 -211732.3380000000)) +(keepout "" + ( polygon signal 0 151000.0840000000 -211732.3380000000 151000.0840000000 -211467.7540000000 169999.9590000000 -211467.7540000000 169999.9590000000 -211732.3380000000)) +(keepout "" + ( polygon signal 0 151000.0840000000 -249732.0840000000 151000.0840000000 -249467.5010000000 169999.9590000000 -249467.5010000000 169999.9590000000 -249732.0840000000)) +(keepout "" + ( polygon signal 0 118999.9710000000 -249732.0840000000 118999.9710000000 -249467.5010000000 137999.8460000000 -249467.5010000000 137999.8460000000 -249732.0840000000)) +(keepout "" + ( polygon signal 0 118999.9710000000 -211732.3380000000 118999.9710000000 -211467.7540000000 137999.8460000000 -211467.7540000000 137999.8460000000 -211732.3380000000)) +(keepout "" + ( polygon signal 0 65328.8290000000 -108600.1300000000 65328.8290000000 -85599.9830000000 65593.4120000000 -85599.9830000000 65593.4120000000 -108600.1300000000)) +(keepout "" + ( polygon signal 0 65461.1210000000 -108732.4220000000 65461.1210000000 -108467.8390000000 77538.9370000000 -108467.8390000000 77538.9370000000 -108732.4220000000)) +(keepout "" + ( polygon signal 0 77406.6460000000 -108600.1300000000 77406.6460000000 -85599.9830000000 77671.2290000000 -85599.9830000000 77671.2290000000 -108600.1300000000)) +(keepout "" + ( polygon signal 0 65461.1210000000 -85732.2750000000 65461.1210000000 -85467.6910000000 77538.9370000000 -85467.6910000000 77538.9370000000 -85732.2750000000)) +(keepout "" + ( polygon signal 0 44250.0120000000 -191982.1200000000 44250.0120000000 -191717.5370000000 44750.2410000000 -191717.5370000000 44750.2410000000 -191982.1200000000)) +(keepout "" + ( polygon signal 0 44617.9500000000 -191849.8290000000 44617.9500000000 -171349.7880000000 44882.5330000000 -171349.7880000000 44882.5330000000 -191849.8290000000)) +(keepout "" + ( polygon signal 0 44250.0120000000 -171482.0790000000 44250.0120000000 -171217.4960000000 44750.2410000000 -171217.4960000000 44750.2410000000 -171482.0790000000)) +(keepout "" + ( polygon signal 0 44117.7200000000 -191849.8290000000 44117.7200000000 -171349.7880000000 44382.3040000000 -171349.7880000000 44382.3040000000 -191849.8290000000)) +(keepout "" + ( polygon signal 0 150406.8410000000 -108600.1300000000 150406.8410000000 -85599.9830000000 150671.4240000000 -85599.9830000000 150671.4240000000 -108600.1300000000)) +(keepout "" + ( polygon signal 0 94250.0600000000 -126148.9290000000 94250.0600000000 -125884.3460000000 94749.7730000000 -125884.3460000000 94749.7730000000 -126148.9290000000)) +(keepout "" + ( polygon signal 0 94117.7690000000 -139183.2750000000 94117.7690000000 -126016.6380000000 94382.3520000000 -126016.6380000000 94382.3520000000 -139183.2750000000)) +(keepout "" + ( polygon signal 0 94250.0600000000 -139315.5670000000 94250.0600000000 -139050.9840000000 94749.7730000000 -139050.9840000000 94749.7730000000 -139315.5670000000)) +(keepout "" + ( polygon signal 0 94617.4820000000 -139183.2750000000 94617.4820000000 -126016.6380000000 94882.0650000000 -126016.6380000000 94882.0650000000 -139183.2750000000)) +(keepout "" + ( polygon signal 0 36867.5180000000 -211600.0460000000 36867.5180000000 -151600.0890000000 37132.1010000000 -151600.0890000000 37132.1010000000 -211600.0460000000)) +(keepout "" + ( polygon signal 0 158367.5950000000 -61417.9980000000 158367.5950000000 -46509.3460000000 158632.1780000000 -46509.3460000000 158632.1780000000 -61417.9980000000)) +(keepout "" + ( polygon signal 0 163406.5630000000 -66511.7430000000 158406.3510000000 -61511.5310000000 158593.4200000000 -61324.4620000000 163593.6320000000 -66324.6740000000)) +(keepout "" + ( polygon signal 0 158593.4200000000 -46602.8820000000 158406.3510000000 -46415.2950000000 163406.5630000000 -41415.6010000000 163593.6320000000 -41602.6690000000)) +(keepout "" + ( polygon signal 0 163367.8050000000 -66418.2100000000 163367.8050000000 -61417.9980000000 163632.3880000000 -61417.9980000000 163632.3880000000 -66418.2100000000)) +(keepout "" + ( polygon signal 0 158367.5950000000 -126266.7510000000 158367.5950000000 -121266.5410000000 158632.1780000000 -121266.5410000000 158632.1780000000 -126266.7510000000)) +(keepout "" + ( polygon signal 0 153593.7260000000 -126360.2860000000 153406.6580000000 -126173.2180000000 158406.3510000000 -121173.0060000000 158593.4200000000 -121360.0740000000)) +(keepout "" + ( polygon signal 0 158406.3510000000 -144026.9070000000 153406.6580000000 -139026.6980000000 153593.7260000000 -138839.6290000000 158593.4200000000 -143839.8390000000)) +(keepout "" + ( polygon signal 0 158367.5950000000 -143933.3740000000 158367.5950000000 -138933.1620000000 158632.1780000000 -138933.1620000000 158632.1780000000 -143933.3740000000)) +(keepout "" + ( polygon signal 0 153367.8990000000 -138933.1620000000 153367.8990000000 -126266.7510000000 153632.4820000000 -126266.7510000000 153632.4820000000 -138933.1620000000)) +(keepout "" + ( polygon signal 0 -132.2920000000 -113599.8240000000 -132.2920000000 -31600.1890000000 132.2920000000 -31600.1890000000 132.2920000000 -113599.8240000000)) +(keepout "" + ( polygon signal 0 138460.8000000000 -108732.4220000000 138460.8000000000 -108467.8390000000 150539.1330000000 -108467.8390000000 150539.1330000000 -108732.4220000000)) +(keepout "" + ( polygon signal 0 138460.8000000000 -85732.2750000000 138460.8000000000 -85467.6910000000 150539.1330000000 -85467.6910000000 150539.1330000000 -85732.2750000000)) +(keepout "" + ( polygon signal 0 95999.8240000000 -211732.3380000000 95999.8240000000 -211467.7540000000 106000.2480000000 -211467.7540000000 106000.2480000000 -211732.3380000000)) +(keepout "" + ( polygon signal 0 80617.8190000000 -74850.2530000000 80617.8190000000 -66850.2240000000 80882.4030000000 -66850.2240000000 80882.4030000000 -74850.2530000000)) +(keepout "" + ( polygon signal 0 95999.8240000000 -249732.0840000000 95999.8240000000 -249467.5010000000 106000.2480000000 -249467.5010000000 106000.2480000000 -249732.0840000000)) +(keepout "" + ( polygon signal 0 107617.7200000000 -74850.2530000000 107617.7200000000 -66850.2240000000 107882.3040000000 -66850.2240000000 107882.3040000000 -74850.2530000000)) +(keepout "" + ( polygon signal 0 160867.7010000000 -151600.0890000000 160867.7010000000 -113599.8240000000 161132.2850000000 -113599.8240000000 161132.2850000000 -151600.0890000000)) +(keepout "" + ( polygon signal 0 149867.8550000000 -51099.7640000000 149867.8550000000 -42099.7980000000 150132.4390000000 -42099.7980000000 150132.4390000000 -51099.7640000000)) +(keepout "" + ( polygon signal 0 150000.1470000000 -51232.0550000000 150000.1470000000 -50967.4720000000 153999.9040000000 -50967.4720000000 153999.9040000000 -51232.0550000000)) +(keepout "" + ( polygon signal 0 153867.6120000000 -51099.7640000000 153867.6120000000 -42099.7980000000 154132.1950000000 -42099.7980000000 154132.1950000000 -51099.7640000000)) +(keepout "" + ( polygon signal 0 150000.1470000000 -42232.0890000000 150000.1470000000 -41967.5060000000 153999.9040000000 -41967.5060000000 153999.9040000000 -42232.0890000000)) +(keepout "" + ( polygon signal 0 160867.7010000000 -211600.0460000000 160867.7010000000 -151600.0890000000 161132.2850000000 -151600.0890000000 161132.2850000000 -211600.0460000000)) +(keepout "" + ( polygon signal 0 118999.9710000000 -151732.3810000000 118999.9710000000 -151467.7980000000 137999.8460000000 -151467.7980000000 137999.8460000000 -151732.3810000000)) +(keepout "" + ( polygon signal 0 81000.2240000000 -211732.3380000000 81000.2240000000 -211467.7540000000 93999.9470000000 -211467.7540000000 93999.9470000000 -211732.3380000000)) +(keepout "" + ( polygon signal 0 81000.2240000000 -151732.3810000000 81000.2240000000 -151467.7980000000 93999.9470000000 -151467.7980000000 93999.9470000000 -151732.3810000000)) +(keepout "" + ( polygon signal 0 101867.6840000000 -31499.9380000000 101867.6840000000 -13499.9900000000 102132.2680000000 -13499.9900000000 102132.2680000000 -31499.9380000000)) +(keepout "" + ( polygon signal 0 113867.4670000000 -31499.9380000000 113867.4670000000 -13499.9900000000 114132.0500000000 -13499.9900000000 114132.0500000000 -31499.9380000000)) +(keepout "" + ( polygon signal 0 138328.5080000000 -108600.1300000000 138328.5080000000 -85599.9830000000 138593.0920000000 -85599.9830000000 138593.0920000000 -108600.1300000000)) +(keepout "" + ( polygon signal 0 162250.0460000000 -237315.7890000000 162250.0460000000 -237051.2060000000 162749.7570000000 -237051.2060000000 162749.7570000000 -237315.7890000000)) +(keepout "" + ( polygon signal 0 162617.4650000000 -237183.4970000000 162617.4650000000 -224016.8570000000 162882.0480000000 -224016.8570000000 162882.0480000000 -237183.4970000000)) +(keepout "" + ( polygon signal 0 162250.0460000000 -224149.1490000000 162250.0460000000 -223884.5650000000 162749.7570000000 -223884.5650000000 162749.7570000000 -224149.1490000000)) +(keepout "" + ( polygon signal 0 162117.7540000000 -237183.4970000000 162117.7540000000 -224016.8570000000 162382.3380000000 -224016.8570000000 162382.3380000000 -237183.4970000000)) +(keepout "" + ( polygon signal 0 138328.5080000000 -141600.1830000000 138328.5080000000 -118600.0360000000 138593.0920000000 -118600.0360000000 138593.0920000000 -141600.1830000000)) +(keepout "" + ( polygon signal 0 86999.8580000000 -151732.3810000000 86999.8580000000 -151467.7980000000 106000.2480000000 -151467.7980000000 106000.2480000000 -151732.3810000000)) +(keepout "" + ( polygon signal 0 86999.8580000000 -113732.1160000000 86999.8580000000 -113467.5320000000 106000.2480000000 -113467.5320000000 106000.2480000000 -113732.1160000000)) +(keepout "" + ( polygon signal 0 77867.5970000000 -31600.1890000000 77867.5970000000 -31499.9380000000 78132.1810000000 -31499.9380000000 78132.1810000000 -31600.1890000000)) +(keepout "" + ( polygon signal 0 137867.5540000000 -31600.1890000000 137867.5540000000 -31499.9380000000 138132.1370000000 -31499.9380000000 138132.1370000000 -31600.1890000000)) +(keepout "" + ( polygon signal 0 101999.9760000000 -31632.2300000000 101999.9760000000 -31367.6470000000 113999.7590000000 -31367.6470000000 113999.7590000000 -31632.2300000000)) +(keepout "" + ( polygon signal 0 36999.8100000000 -151732.3810000000 36999.8100000000 -151467.7980000000 81000.2240000000 -151467.7980000000 81000.2240000000 -151732.3810000000)) +(keepout "" + ( polygon signal 0 153593.7260000000 -171693.4370000000 153406.6580000000 -171506.3680000000 158632.1780000000 -166280.8470000000 158632.1780000000 -171599.9040000000 158367.5950000000 -171599.9040000000 158367.5950000000 -166919.5670000000)) +(keepout "" + ( polygon signal 0 158406.3510000000 -196693.4610000000 153367.8990000000 -191655.0080000000 153367.8990000000 -171599.9040000000 153632.4820000000 -171599.9040000000 153632.4820000000 -191545.4550000000 158593.4200000000 -196506.3920000000)) +(keepout "" + ( polygon signal 0 158367.5950000000 -196599.9280000000 158367.5950000000 -191600.2310000000 158632.1780000000 -191600.2310000000 158632.1780000000 -196599.9280000000)) +(keepout "" + ( polygon signal 0 165867.9110000000 -113599.8240000000 165867.9110000000 -31600.1890000000 166132.4940000000 -31600.1890000000 166132.4940000000 -113599.8240000000)) +(keepout "" + ( polygon signal 0 150406.8410000000 -244600.0960000000 150406.8410000000 -221599.9520000000 150671.4240000000 -221599.9520000000 150671.4240000000 -244600.0960000000)) +(keepout "" + ( polygon signal 0 138460.8000000000 -221732.2440000000 138460.8000000000 -221467.6600000000 150539.1330000000 -221467.6600000000 150539.1330000000 -221732.2440000000)) +(keepout "" + ( polygon signal 0 138328.5080000000 -244600.0960000000 138328.5080000000 -221599.9520000000 138593.0920000000 -221599.9520000000 138593.0920000000 -244600.0960000000)) +(keepout "" + ( polygon signal 0 138460.8000000000 -244732.3880000000 138460.8000000000 -244467.8050000000 150539.1330000000 -244467.8050000000 150539.1330000000 -244732.3880000000)) +(keepout "" + ( polygon signal 0 103367.8510000000 -236933.3820000000 103367.8510000000 -224266.4540000000 103632.4340000000 -224266.4540000000 103632.4340000000 -236933.3820000000)) +(keepout "" + ( polygon signal 0 103406.6070000000 -224359.9900000000 98632.2220000000 -219586.1210000000 98632.2220000000 -224266.4540000000 98367.6380000000 -224266.4540000000 98367.6380000000 -218947.4010000000 103593.6780000000 -224172.9220000000)) +(keepout "" + ( polygon signal 0 31750.0000000000 -35982.3400000000 31750.0000000000 -35717.7570000000 32250.2270000000 -35717.7570000000 32250.2270000000 -35982.3400000000)) +(keepout "" + ( polygon signal 0 32117.9350000000 -45350.2430000000 32117.9350000000 -35850.0480000000 32382.5180000000 -35850.0480000000 32382.5180000000 -45350.2430000000)) +(keepout "" + ( polygon signal 0 31750.0000000000 -45482.5350000000 31750.0000000000 -45217.9520000000 32250.2270000000 -45217.9520000000 32250.2270000000 -45482.5350000000)) +(keepout "" + ( polygon signal 0 31617.7080000000 -45350.2430000000 31617.7080000000 -35850.0480000000 31882.2920000000 -35850.0480000000 31882.2920000000 -45350.2430000000)) +(keepout "" + ( polygon signal 0 59999.9540000000 -113732.1160000000 59999.9540000000 -113467.5320000000 77999.8890000000 -113467.5320000000 77999.8890000000 -113732.1160000000)) +(keepout "" + ( polygon signal 0 59999.9540000000 -31732.4810000000 59999.9540000000 -31467.8970000000 77999.8890000000 -31467.8970000000 77999.8890000000 -31732.4810000000)) +(keepout "" + ( polygon signal 0 137999.8460000000 -31732.4810000000 137999.8460000000 -31467.8970000000 155999.7810000000 -31467.8970000000 155999.7810000000 -31732.4810000000)) +(keepout "" + ( polygon signal 0 137999.8460000000 -113732.1160000000 137999.8460000000 -113467.5320000000 155999.7810000000 -113467.5320000000 155999.7810000000 -113732.1160000000)) +(keepout "" + ( polygon signal 0 77867.5970000000 -31499.9380000000 77867.5970000000 -0.0490000000 78132.1810000000 -0.0490000000 78132.1810000000 -31499.9380000000)) +(keepout "" + ( polygon signal 0 77999.8890000000 -132.3410000000 77999.8890000000 132.2430000000 98000.2190000000 132.2430000000 98000.2190000000 -132.3410000000)) +(keepout "" + ( polygon signal 0 101999.9760000000 -31632.2300000000 101999.9760000000 -31367.6470000000 113999.7590000000 -31367.6470000000 113999.7590000000 -31632.2300000000)) +(keepout "" + ( polygon signal 0 129117.7010000000 -208982.1160000000 129117.7010000000 -181717.6310000000 137382.3110000000 -181717.6310000000 137382.3110000000 -181849.9230000000 137382.3110000000 -208982.1160000000)) +(keepout "" + ( polygon signal 0 129382.2850000000 -208717.5320000000 137117.7280000000 -208717.5320000000 137117.7280000000 -181982.2150000000 129382.2850000000 -181982.2150000000)) +(keepout "" + ( polygon signal 0 98000.2190000000 -132.3410000000 98000.2190000000 132.2430000000 118000.0340000000 132.2430000000 118000.0340000000 -132.3410000000)) +(keepout "" + ( polygon signal 0 101867.6840000000 -31499.9380000000 101867.6840000000 -13499.9900000000 102132.2680000000 -13499.9900000000 102132.2680000000 -31499.9380000000)) +(keepout "" + ( polygon signal 0 113867.4670000000 -31499.9380000000 113867.4670000000 -13499.9900000000 114132.0500000000 -13499.9900000000 114132.0500000000 -31499.9380000000)) +(keepout "" + ( polygon signal 0 155999.7810000000 -113732.1160000000 155999.7810000000 -113467.5320000000 166000.2020000000 -113467.5320000000 166000.2020000000 -113732.1160000000)) +(keepout "" + ( polygon signal 0 155999.7810000000 -31732.4810000000 155999.7810000000 -31467.8970000000 166000.2020000000 -31467.8970000000 166000.2020000000 -31732.4810000000)) +(keepout "" + ( polygon signal 0 86867.5660000000 -151600.0890000000 86867.5660000000 -113599.8240000000 87132.1490000000 -113599.8240000000 87132.1490000000 -151600.0890000000)) +(keepout "" + ( polygon signal 0 93999.9470000000 -211732.3380000000 93999.9470000000 -211467.7540000000 137999.8460000000 -211467.7540000000 137999.8460000000 -211732.3380000000)) +(keepout "" + ( polygon signal 0 93999.9470000000 -151732.3810000000 93999.9470000000 -151467.7980000000 137999.8460000000 -151467.7980000000 137999.8460000000 -151732.3810000000)) +(keepout "" + ( polygon signal 0 80750.1110000000 -74982.5450000000 80750.1110000000 -74717.9620000000 107750.0120000000 -74717.9620000000 107750.0120000000 -74982.5450000000)) +(keepout "" + ( polygon signal 0 0.0000000000 -113732.1160000000 0.0000000000 -113467.5320000000 59999.9540000000 -113467.5320000000 59999.9540000000 -113732.1160000000)) +(keepout "" + ( polygon signal 0 80750.1110000000 -66982.5160000000 80750.1110000000 -66717.9330000000 107750.0120000000 -66717.9330000000 107750.0120000000 -66982.5160000000)) +(keepout "" + ( polygon signal 0 151000.0840000000 -113732.1160000000 151000.0840000000 -113467.5320000000 160999.9930000000 -113467.5320000000 160999.9930000000 -113732.1160000000)) +(keepout "" + ( polygon signal 0 151000.0840000000 -151732.3810000000 151000.0840000000 -151467.7980000000 160999.9930000000 -151467.7980000000 160999.9930000000 -151732.3810000000)) +(keepout "" + ( polygon signal 0 95867.5320000000 -249599.7930000000 95867.5320000000 -211600.0460000000 96132.1160000000 -211600.0460000000 96132.1160000000 -249599.7930000000)) +(keepout "" + ( polygon signal 0 24000.0850000000 -31732.4810000000 24000.0850000000 -31467.8970000000 35999.8700000000 -31467.8970000000 35999.8700000000 -31732.4810000000)) +(keepout "" + ( polygon signal 0 150406.8410000000 -141600.1830000000 150406.8410000000 -118600.0360000000 150671.4240000000 -118600.0360000000 150671.4240000000 -141600.1830000000)) +(keepout "" + ( polygon signal 0 138460.8000000000 -118732.3280000000 138460.8000000000 -118467.7440000000 150539.1330000000 -118467.7440000000 150539.1330000000 -118732.3280000000)) +(keepout "" + ( polygon signal 0 106000.2480000000 -249732.0840000000 106000.2480000000 -249467.5010000000 118999.9710000000 -249467.5010000000 118999.9710000000 -249732.0840000000)) +(keepout "" + ( polygon signal 0 138460.8000000000 -141732.4750000000 138460.8000000000 -141467.8920000000 150539.1330000000 -141467.8920000000 150539.1330000000 -141732.4750000000)) +(keepout "" + ( polygon signal 0 118000.0340000000 -132.3410000000 118000.0340000000 132.2430000000 137999.8460000000 132.2430000000 137999.8460000000 -132.3410000000)) +(keepout "" + ( polygon signal 0 137867.5540000000 -31499.9380000000 137867.5540000000 -0.0490000000 138132.1370000000 -0.0490000000 138132.1370000000 -31499.9380000000)) +(keepout "" + ( polygon signal 0 36999.8100000000 -211732.3380000000 36999.8100000000 -211467.7540000000 81000.2240000000 -211467.7540000000 81000.2240000000 -211732.3380000000)) +(keepout "" + ( polygon signal 0 163367.8050000000 -46509.3460000000 163367.8050000000 -41509.1340000000 163632.3880000000 -41509.1340000000 163632.3880000000 -46509.3460000000)) +(keepout "" + ( polygon signal 0 163367.8050000000 -103690.8680000000 163367.8050000000 -98690.6590000000 163632.3880000000 -98690.6590000000 163632.3880000000 -103690.8680000000)) +(keepout "" + ( polygon signal 0 158367.5950000000 -98690.6590000000 158367.5950000000 -83782.0070000000 158632.1780000000 -83782.0070000000 158632.1780000000 -98690.6590000000)) +(keepout "" + ( polygon signal 0 163406.5630000000 -103784.4040000000 158406.3510000000 -98784.7080000000 158593.4200000000 -98597.1230000000 163593.6320000000 -103597.3360000000)) +(keepout "" + ( polygon signal 0 163367.8050000000 -83782.0070000000 163367.8050000000 -78781.7950000000 163632.3880000000 -78781.7950000000 163632.3880000000 -83782.0070000000)) +(keepout "" + ( polygon signal 0 158593.4200000000 -83875.5400000000 158406.3510000000 -83688.4720000000 163406.5630000000 -78688.2620000000 163593.6320000000 -78875.3300000000)) +(keepout "" + ( polygon signal 0 98367.6380000000 -242252.9540000000 98367.6380000000 -236933.3820000000 98632.2220000000 -236933.3820000000 98632.2220000000 -241613.7180000000 103406.6070000000 -236839.8490000000 103593.6780000000 -237026.9170000000)) +(keepout "" + ( polygon signal 0 137999.8460000000 -113732.1160000000 137999.8460000000 -113467.5320000000 151000.0840000000 -113467.5320000000 151000.0840000000 -113732.1160000000)) +(keepout "" + ( polygon signal 0 96999.7640000000 -113732.1160000000 96999.7640000000 -113467.5320000000 118999.9710000000 -113467.5320000000 118999.9710000000 -113732.1160000000)) +(keepout "" + ( polygon signal 0 77999.8890000000 -113732.1160000000 77999.8890000000 -113467.5320000000 96999.7640000000 -113467.5320000000 96999.7640000000 -113732.1160000000)) (via "Via[0-1]_800:400_um") (rule (width 250) @@ -48,5 +308,27 @@ (outline (path signal 120 -7620 -13570 -7620 11430)) (pin Round[A]Pad_1524_um 1 -6350 10160) -(pin Round[A]Pad_1524_um 2 -6350 7620)) -)) \ No newline at end of file +(pin Round[A]Pad_1524_um 2 -6350 7620)) +(padstack Round[A]Pad_1524_um +(shape + ( circle F.Cu 1524)) +(shape + ( circle B.Cu 1524)) + (attach off)) +(padstack "Via[0-1]_800:400_um" +(shape + ( circle F.Cu 800)) +(shape + ( circle B.Cu 800)) + (attach off))) + (network +(net 3v3 + (pins U1-3 J1-1)) +(net VIN + (pins U1-1)) +(class default 3v3 GND VIN + (circuit + (use_via Via[0-1]_800:400_um)) + (rule + (width 1000) + (clearance 200.1000000000))))) \ No newline at end of file diff --git a/journal_media/dxf_in_freerouting.png b/journal_media/dxf_in_freerouting.png new file mode 100644 index 0000000000000000000000000000000000000000..0a5476bbfdb58677f08362824fc84b8e7a05b5e2 Binary files /dev/null and b/journal_media/dxf_in_freerouting.png differ diff --git a/journal_media/keepout_load.png b/journal_media/keepout_load.png new file mode 100644 index 0000000000000000000000000000000000000000..66932cde20ae7b5e4ef688dc571f0f61a5367c17 Binary files /dev/null and b/journal_media/keepout_load.png differ