diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..fd20fddf874731c364880a33eb9acd43c1512365 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +*.pyc diff --git a/3D Design/battery case (origami)/.gitkeep b/3D Design/battery case (origami)/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/3D Design/battery case (origami)/battery.dxf b/3D Design/battery case (origami)/battery.dxf new file mode 100644 index 0000000000000000000000000000000000000000..81141c0597ce58ec60b4d4b1d9f57695ad895ece --- /dev/null +++ b/3D Design/battery case (origami)/battery.dxf @@ -0,0 +1,15168 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1032 + 9 +$ACADMAINTVER + 90 + 110 + 9 +$DWGCODEPAGE + 3 +ANSI_1252 + 9 +$REQUIREDVERSIONS +160 + 0 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +1.000000000000000E+20 + 20 +1.000000000000000E+20 + 30 +1.000000000000000E+20 + 9 +$EXTMAX + 10 +-1.000000000000000E+20 + 20 +-1.000000000000000E+20 + 30 +-1.000000000000000E+20 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +12.0 + 20 +9.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 0 + 9 +$LTSCALE + 40 +1.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +0.2 + 9 +$TRACEWID + 40 +0.05 + 9 +$TEXTSTYLE + 7 +Standard + 9 +$CLAYER + 8 +0 + 9 +$CELTYPE + 6 +ByLayer + 9 +$CECOLOR + 62 + 256 + 9 +$CELTSCALE + 40 +1.0 + 9 +$DISPSILH + 70 + 0 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +0.18 + 9 +$DIMEXO + 40 +0.0625 + 9 +$DIMDLI + 40 +0.38 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +0.18 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +0.18 + 9 +$DIMCEN + 40 +0.09 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 1 + 9 +$DIMTOH + 70 + 1 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 0 + 9 +$DIMZIN + 70 + 0 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 2 + 9 +$DIMALTF + 40 +25.4 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 0 + 9 +$DIMTVP + 40 +0.0 + 9 +$DIMTIX + 70 + 0 + 9 +$DIMSOXD + 70 + 0 + 9 +$DIMSAH + 70 + 0 + 9 +$DIMBLK1 + 1 + + 9 +$DIMBLK2 + 1 + + 9 +$DIMSTYLE + 2 +Standard + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.09 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 1 + 9 +$DIMTZIN + 70 + 0 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 4 + 9 +$DIMTDEC + 70 + 4 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 2 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 46 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$DIMFXL + 40 +1.0 + 9 +$DIMFXLON + 70 + 0 + 9 +$DIMJOGANG + 40 +0.7853981633974483 + 9 +$DIMTFILL + 70 + 0 + 9 +$DIMTFILLCLR + 70 + 0 + 9 +$DIMARCSYM + 70 + 0 + 9 +$DIMLTYPE + 6 + + 9 +$DIMLTEX1 + 6 + + 9 +$DIMLTEX2 + 6 + + 9 +$DIMTXTDIRECTION + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +0.1 + 9 +$FILLETRAD + 40 +0.0 + 9 +$AUNITS + 70 + 0 + 9 +$AUPREC + 70 + 0 + 9 +$MENU + 1 +. + 9 +$ELEVATION + 40 +0.0 + 9 +$PELEVATION + 40 +0.0 + 9 +$THICKNESS + 40 +0.0 + 9 +$LIMCHECK + 70 + 0 + 9 +$CHAMFERA + 40 +0.0 + 9 +$CHAMFERB + 40 +0.0 + 9 +$CHAMFERC + 40 +0.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2459503.674270834 + 9 +$TDUCREATE + 40 +2459503.965937500 + 9 +$TDUPDATE + 40 +2459503.674270834 + 9 +$TDUUPDATE + 40 +2459503.965937500 + 9 +$TDINDWG + 40 +0.0000000000 + 9 +$TDUSRTIMER + 40 +0.0000000000 + 9 +$USRTIMER + 70 + 1 + 9 +$ANGBASE + 50 +0.0 + 9 +$ANGDIR + 70 + 0 + 9 +$PDMODE + 70 + 0 + 9 +$PDSIZE + 40 +0.0 + 9 +$PLINEWID + 40 +0.0 + 9 +$SPLFRAME + 70 + 0 + 9 +$SPLINETYPE + 70 + 6 + 9 +$SPLINESEGS + 70 + 8 + 9 +$HANDSEED + 5 +105 + 9 +$SURFTAB1 + 70 + 6 + 9 +$SURFTAB2 + 70 + 6 + 9 +$SURFTYPE + 70 + 6 + 9 +$SURFU + 70 + 6 + 9 +$SURFV + 70 + 6 + 9 +$UCSBASE + 2 + + 9 +$UCSNAME + 2 + + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 + 0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 + 0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 + 0 + 9 +$USERI2 + 70 + 0 + 9 +$USERI3 + 70 + 0 + 9 +$USERI4 + 70 + 0 + 9 +$USERI5 + 70 + 0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 + 1 + 9 +$SHADEDGE + 70 + 3 + 9 +$SHADEDIF + 70 + 70 + 9 +$TILEMODE + 70 + 1 + 9 +$MAXACTVP + 70 + 64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 + 0 + 9 +$PEXTMIN + 10 +1.000000000000000E+20 + 20 +1.000000000000000E+20 + 30 +1.000000000000000E+20 + 9 +$PEXTMAX + 10 +-1.000000000000000E+20 + 20 +-1.000000000000000E+20 + 30 +-1.000000000000000E+20 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +12.0 + 20 +9.0 + 9 +$UNITMODE + 70 + 0 + 9 +$VISRETAIN + 70 + 1 + 9 +$PLINEGEN + 70 + 0 + 9 +$PSLTSCALE + 70 + 1 + 9 +$TREEDEPTH + 70 + 3020 + 9 +$CMLSTYLE + 2 +Standard + 9 +$CMLJUST + 70 + 0 + 9 +$CMLSCALE + 40 +1.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 0 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 1 + 9 +$INSUNITS + 70 + 0 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{9B3BA956-7DB8-2640-8C51-BE402310ACCA} + 9 +$VERSIONGUID + 2 +{2AD25093-D952-2E4E-ABFE-6384F446C462} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +280 + 2 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 9 +$CAMERADISPLAY +290 + 0 + 9 +$LENSLENGTH + 40 +50.0 + 9 +$CAMERAHEIGHT + 40 +0.0 + 9 +$STEPSPERSEC + 40 +2.0 + 9 +$STEPSIZE + 40 +6.0 + 9 +$3DDWFPREC + 40 +2.0 + 9 +$PSOLWIDTH + 40 +0.25 + 9 +$PSOLHEIGHT + 40 +4.0 + 9 +$LOFTANG1 + 40 +1.570796326794896 + 9 +$LOFTANG2 + 40 +1.570796326794896 + 9 +$LOFTMAG1 + 40 +0.0 + 9 +$LOFTMAG2 + 40 +0.0 + 9 +$LOFTPARAM + 70 + 7 + 9 +$LOFTNORMALS +280 + 1 + 9 +$LATITUDE + 40 +37.795 + 9 +$LONGITUDE + 40 +-122.394 + 9 +$NORTHDIRECTION + 40 +0.0 + 9 +$TIMEZONE + 70 + -8000 + 9 +$LIGHTGLYPHDISPLAY +280 + 1 + 9 +$TILEMODELIGHTSYNCH +280 + 1 + 9 +$CMATERIAL +347 +11 + 9 +$SOLIDHIST +280 + 0 + 9 +$SHOWHIST +280 + 1 + 9 +$DWFFRAME +280 + 2 + 9 +$DGNFRAME +280 + 0 + 9 +$REALWORLDSCALE +290 + 1 + 9 +$INTERFERECOLOR + 62 + 1 + 9 +$INTERFEREOBJVS +345 +33 + 9 +$INTERFEREVPVS +346 +30 + 9 +$CSHADOW +280 + 0 + 9 +$SHADOWPLANELOCATION + 40 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 3 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 24 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 17 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MLEADERSTYLE + 2 +AcDbMLeaderStyle + 3 +ACDB_MLEADERSTYLE_CLASS + 90 + 4095 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBSECTIONVIEWSTYLE + 2 +AcDbSectionViewStyle + 3 +ObjectDBX Classes + 90 + 1025 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBDETAILVIEWSTYLE + 2 +AcDbDetailViewStyle + 3 +ObjectDBX Classes + 90 + 1025 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +CELLSTYLEMAP + 2 +AcDbCellStyleMap + 3 +ObjectDBX Classes + 90 + 1152 + 91 + 1 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +VPORT + 5 +57 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +0.0 + 22 +0.0 + 13 +0.0 + 23 +0.0 + 14 +1.0 + 24 +1.0 + 15 +0.0 + 25 +0.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +573.0999755859374 + 27 +425.2000122070312 + 37 +0.0 + 40 +867.4080249023438 + 41 +1.347836216210862 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 100 + 73 + 1 + 74 + 0 + 75 + 1 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 60 + 3 + 61 + 5 +292 + 1 +282 + 1 +141 +0.0 +142 +0.0 + 63 + 250 +421 + 3355443 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 9 + 0 +LTYPE + 5 +5B +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +5C +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +5D +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +A0 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +AI-Linetype-0 + 70 + 0 + 3 +Adobe Illustrator Linetype No. 0 + 72 + 65 + 73 + 2 + 40 +8.106599807739257 + 49 +4.053299903869628 + 74 + 0 + 49 +-4.053299903869628 + 74 + 0 + 0 +LTYPE + 5 +AC +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +AI-Linetype-1 + 70 + 0 + 3 +Adobe Illustrator Linetype No. 1 + 72 + 65 + 73 + 2 + 40 +8.106599807739257 + 49 +4.053299903869628 + 74 + 0 + 49 +-4.053299903869628 + 74 + 0 + 0 +LTYPE + 5 +B8 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +AI-Linetype-2 + 70 + 0 + 3 +Adobe Illustrator Linetype No. 2 + 72 + 65 + 73 + 2 + 40 +8.106599807739257 + 49 +4.053299903869628 + 74 + 0 + 49 +-4.053299903869628 + 74 + 0 + 0 +LTYPE + 5 +C4 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +AI-Linetype-3 + 70 + 0 + 3 +Adobe Illustrator Linetype No. 3 + 72 + 65 + 73 + 2 + 40 +8.137200355529785 + 49 +4.068600177764892 + 74 + 0 + 49 +-4.068600177764892 + 74 + 0 + 0 +LTYPE + 5 +D0 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +AI-Linetype-4 + 70 + 0 + 3 +Adobe Illustrator Linetype No. 4 + 72 + 65 + 73 + 2 + 40 +8.137200355529785 + 49 +4.068600177764892 + 74 + 0 + 49 +-4.068600177764892 + 74 + 0 + 0 +LTYPE + 5 +DC +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +AI-Linetype-5 + 70 + 0 + 3 +Adobe Illustrator Linetype No. 5 + 72 + 65 + 73 + 2 + 40 +8.106599807739257 + 49 +4.053299903869628 + 74 + 0 + 49 +-4.053299903869628 + 74 + 0 + 0 +LTYPE + 5 +E8 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +AI-Linetype-6 + 70 + 0 + 3 +Adobe Illustrator Linetype No. 6 + 72 + 65 + 73 + 2 + 40 +8.137200355529785 + 49 +4.068600177764892 + 74 + 0 + 49 +-4.068600177764892 + 74 + 0 + 0 +LTYPE + 5 +F4 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +AI-Linetype-7 + 70 + 0 + 3 +Adobe Illustrator Linetype No. 7 + 72 + 65 + 73 + 2 + 40 +8.137200355529785 + 49 +4.068600177764892 + 74 + 0 + 49 +-4.068600177764892 + 74 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +54 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +21 +348 +0 + 0 +LAYER + 5 +78 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Layer 1 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + 0 +390 +F +347 +21 +348 +0 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +STYLE + 5 +55 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +txt + 4 + + 0 +STYLE + 5 +5A +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Annotative + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +txt + 4 + +1001 +AcadAnnotative +1000 +AnnotativeData +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 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 +56 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +5E +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +AcadAnnotative + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 71 + 0 + 0 +DIMSTYLE +105 +58 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +55 + 0 +DIMSTYLE +105 +59 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Annotative + 70 + 0 +340 +55 +1001 +AcadAnnotative +1000 +AnnotativeData +1002 +{ +1070 + 1 +1070 + 1 +1002 +} + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 17 + 0 +BLOCK_RECORD + 5 +70 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +73 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +6C +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +6F + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +74 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +77 + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +96 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_0 +340 +0 +102 +{BLKREFS +331 +97 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +9A +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_1 +340 +0 +102 +{BLKREFS +331 +9B +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +A2 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_2 +340 +0 +102 +{BLKREFS +331 +A3 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +A6 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_3 +340 +0 +102 +{BLKREFS +331 +A7 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +AE +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_4 +340 +0 +102 +{BLKREFS +331 +AF +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +B2 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_5 +340 +0 +102 +{BLKREFS +331 +B3 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +BA +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_6 +340 +0 +102 +{BLKREFS +331 +BB +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +BE +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_7 +340 +0 +102 +{BLKREFS +331 +BF +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +C6 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_8 +340 +0 +102 +{BLKREFS +331 +C7 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +CA +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_9 +340 +0 +102 +{BLKREFS +331 +CB +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +D2 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_10 +340 +0 +102 +{BLKREFS +331 +D3 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +D6 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_11 +340 +0 +102 +{BLKREFS +331 +D7 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +DE +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_12 +340 +0 +102 +{BLKREFS +331 +DF +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +E2 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_13 +340 +0 +102 +{BLKREFS +331 +E3 +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +EA +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_14 +340 +0 +102 +{BLKREFS +331 +EB +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +BLOCK_RECORD + 5 +EE +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +Block_15 +340 +0 +102 +{BLKREFS +331 +EF +102 +} + 70 + 0 +280 + 1 +281 + 0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +71 +330 +70 +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 +72 +330 +70 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +6D +330 +6C +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +6E +330 +6C +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +75 +330 +74 +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +76 +330 +74 +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +98 +330 +96 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_0 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_0 + 1 + + 0 +INSERT + 5 +9B +330 +96 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +99 +330 +96 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +9C +330 +9A +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_1 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_1 + 1 + + 0 +LINE + 5 +9E +330 +9A +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +393.6000366210937 + 30 +0.0 + 11 +563.7999877929687 + 21 +393.6000366210937 + 31 +0.0 + 0 +LINE + 5 +9F +330 +9A +100 +AcDbEntity + 8 +Layer 1 + 6 +AI-Linetype-0 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +559.7000122070312 + 20 +393.6000366210937 + 30 +0.0 + 11 +513.0999755859375 + 21 +393.6000366210937 + 31 +0.0 + 0 +LINE + 5 +A1 +330 +9A +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +511.1000061035156 + 20 +393.6000366210937 + 30 +0.0 + 11 +509.1000061035156 + 21 +393.6000366210937 + 31 +0.0 + 0 +ENDBLK + 5 +9D +330 +9A +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +A4 +330 +A2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_2 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_2 + 1 + + 0 +INSERT + 5 +A7 +330 +A2 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_3 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +A5 +330 +A2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +A8 +330 +A6 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_3 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_3 + 1 + + 0 +LINE + 5 +AA +330 +A6 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +579.9000244140625 + 30 +0.0 + 11 +563.7999877929687 + 21 +579.9000244140625 + 31 +0.0 + 0 +LINE + 5 +AB +330 +A6 +100 +AcDbEntity + 8 +Layer 1 + 6 +AI-Linetype-1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +559.7000122070312 + 20 +579.9000244140625 + 30 +0.0 + 11 +513.0999755859375 + 21 +579.9000244140625 + 31 +0.0 + 0 +LINE + 5 +AD +330 +A6 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +511.1000061035156 + 20 +579.9000244140625 + 30 +0.0 + 11 +509.1000061035156 + 21 +579.9000244140625 + 31 +0.0 + 0 +ENDBLK + 5 +A9 +330 +A6 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +B0 +330 +AE +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_4 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_4 + 1 + + 0 +INSERT + 5 +B3 +330 +AE +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_5 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +B1 +330 +AE +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +B4 +330 +B2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_5 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_5 + 1 + + 0 +LINE + 5 +B6 +330 +B2 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +370.9000244140625 + 30 +0.0 + 11 +511.1000061035156 + 21 +370.9000244140625 + 31 +0.0 + 0 +LINE + 5 +B7 +330 +B2 +100 +AcDbEntity + 8 +Layer 1 + 6 +AI-Linetype-2 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +515.0999755859374 + 20 +370.9000244140625 + 30 +0.0 + 11 +561.7999877929687 + 21 +370.9000244140625 + 31 +0.0 + 0 +LINE + 5 +B9 +330 +B2 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +563.7999877929687 + 20 +370.9000244140625 + 30 +0.0 + 11 +565.7999877929687 + 21 +370.9000244140625 + 31 +0.0 + 0 +ENDBLK + 5 +B5 +330 +B2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +BC +330 +BA +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_6 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_6 + 1 + + 0 +INSERT + 5 +BF +330 +BA +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_7 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +BD +330 +BA +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +C0 +330 +BE +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_7 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_7 + 1 + + 0 +LINE + 5 +C2 +330 +BE +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +370.9000244140625 + 30 +0.0 + 11 +565.7999877929687 + 21 +368.9000244140625 + 31 +0.0 + 0 +LINE + 5 +C3 +330 +BE +100 +AcDbEntity + 8 +Layer 1 + 6 +AI-Linetype-3 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +364.9000244140625 + 30 +0.0 + 11 +565.7999877929687 + 21 +187.9000244140625 + 31 +0.0 + 0 +LINE + 5 +C5 +330 +BE +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +185.9000244140625 + 30 +0.0 + 11 +565.7999877929687 + 21 +183.9000244140625 + 31 +0.0 + 0 +ENDBLK + 5 +C1 +330 +BE +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +C8 +330 +C6 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_8 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_8 + 1 + + 0 +INSERT + 5 +CB +330 +C6 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_9 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +C9 +330 +C6 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +CC +330 +CA +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_9 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_9 + 1 + + 0 +LINE + 5 +CE +330 +CA +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +370.9000244140625 + 30 +0.0 + 11 +509.1000061035156 + 21 +368.9000244140625 + 31 +0.0 + 0 +LINE + 5 +CF +330 +CA +100 +AcDbEntity + 8 +Layer 1 + 6 +AI-Linetype-4 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +364.9000244140625 + 30 +0.0 + 11 +509.1000061035156 + 21 +187.9000244140625 + 31 +0.0 + 0 +LINE + 5 +D1 +330 +CA +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +185.9000244140625 + 30 +0.0 + 11 +509.1000061035156 + 21 +183.9000244140625 + 31 +0.0 + 0 +ENDBLK + 5 +CD +330 +CA +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +D4 +330 +D2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_10 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_10 + 1 + + 0 +INSERT + 5 +D7 +330 +D2 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_11 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +D5 +330 +D2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +D8 +330 +D6 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_11 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_11 + 1 + + 0 +LINE + 5 +DA +330 +D6 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +603.5000305175781 + 30 +0.0 + 11 +563.7999877929687 + 21 +603.5000305175781 + 31 +0.0 + 0 +LINE + 5 +DB +330 +D6 +100 +AcDbEntity + 8 +Layer 1 + 6 +AI-Linetype-5 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +559.7000122070312 + 20 +603.5000305175781 + 30 +0.0 + 11 +513.0999755859375 + 21 +603.5000305175781 + 31 +0.0 + 0 +LINE + 5 +DD +330 +D6 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +511.1000061035156 + 20 +603.5000305175781 + 30 +0.0 + 11 +509.1000061035156 + 21 +603.5000305175781 + 31 +0.0 + 0 +ENDBLK + 5 +D9 +330 +D6 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +E0 +330 +DE +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_12 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_12 + 1 + + 0 +INSERT + 5 +E3 +330 +DE +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_13 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +E1 +330 +DE +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +E4 +330 +E2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_13 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_13 + 1 + + 0 +LINE + 5 +E6 +330 +E2 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +588.4999999999999 + 20 +370.9000244140625 + 30 +0.0 + 11 +588.4999999999999 + 21 +368.9000244140625 + 31 +0.0 + 0 +LINE + 5 +E7 +330 +E2 +100 +AcDbEntity + 8 +Layer 1 + 6 +AI-Linetype-6 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +588.4999999999999 + 20 +364.9000244140625 + 30 +0.0 + 11 +588.4999999999999 + 21 +187.9000244140625 + 31 +0.0 + 0 +LINE + 5 +E9 +330 +E2 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +588.4999999999999 + 20 +185.9000244140625 + 30 +0.0 + 11 +588.4999999999999 + 21 +183.9000244140625 + 31 +0.0 + 0 +ENDBLK + 5 +E5 +330 +E2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +EC +330 +EA +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_14 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_14 + 1 + + 0 +INSERT + 5 +EF +330 +EA +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_15 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDBLK + 5 +ED +330 +EA +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +F0 +330 +EE +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +Block_15 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +Block_15 + 1 + + 0 +LINE + 5 +F2 +330 +EE +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +486.3999938964844 + 20 +370.9000244140625 + 30 +0.0 + 11 +486.3999938964844 + 21 +368.9000244140625 + 31 +0.0 + 0 +LINE + 5 +F3 +330 +EE +100 +AcDbEntity + 8 +Layer 1 + 6 +AI-Linetype-7 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +486.3999938964844 + 20 +364.9000244140625 + 30 +0.0 + 11 +486.3999938964844 + 21 +187.9000244140625 + 31 +0.0 + 0 +LINE + 5 +F5 +330 +EE +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +486.3999938964844 + 20 +185.9000244140625 + 30 +0.0 + 11 +486.3999938964844 + 21 +183.9000244140625 + 31 +0.0 + 0 +ENDBLK + 5 +F1 +330 +EE +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +79 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +393.6000366210937 + 30 +0.0 + 11 +565.7999877929687 + 21 +370.9000244140625 + 31 +0.0 + 0 +LINE + 5 +7A +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +393.6000366210937 + 30 +0.0 + 11 +509.1000061035156 + 21 +370.9000244140625 + 31 +0.0 + 0 +LINE + 5 +7B +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +183.9000244140625 + 30 +0.0 + 11 +565.7999877929687 + 21 +183.9000244140625 + 31 +0.0 + 0 +LINE + 5 +7C +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +580.6000366210937 + 30 +0.0 + 11 +565.7999877929687 + 21 +603.3000183105468 + 31 +0.0 + 0 +LINE + 5 +7D +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +580.7000122070312 + 30 +0.0 + 11 +509.1000061035156 + 21 +603.4000244140624 + 31 +0.0 + 0 +LINE + 5 +7E +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +603.6000213623046 + 30 +0.0 + 11 +565.7999877929687 + 21 +639.0000305175781 + 31 +0.0 + 0 +LINE + 5 +7F +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +603.4000244140624 + 30 +0.0 + 11 +509.1000061035156 + 21 +638.8000183105468 + 31 +0.0 + 0 +LINE + 5 +80 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +638.9000244140625 + 30 +0.0 + 11 +565.7999877929687 + 21 +638.9000244140625 + 31 +0.0 + 0 +LWPOLYLINE + 5 +81 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +551.5999755859374 + 20 +627.5000305175781 + 10 +551.5999755859374 + 20 +613.4000244140625 + 10 +523.2999877929687 + 20 +613.4000244140625 + 10 +523.2999877929687 + 20 +627.5000305175781 + 0 +LWPOLYLINE + 5 +82 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +523.2999877929687 + 20 +209.4000244140625 + 10 +551.5999755859374 + 20 +209.4000244140625 + 10 +551.5999755859374 + 20 +208.0 + 10 +523.2999877929687 + 20 +208.0 + 0 +LINE + 5 +83 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +183.9000244140625 + 30 +0.0 + 11 +588.4999999999999 + 21 +183.9000244140625 + 31 +0.0 + 0 +LINE + 5 +84 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +370.9000244140625 + 30 +0.0 + 11 +588.4999999999999 + 21 +370.9000244140625 + 31 +0.0 + 0 +LINE + 5 +85 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +565.7999877929687 + 20 +393.6000366210937 + 30 +0.0 + 11 +565.7999877929687 + 21 +580.7000122070312 + 31 +0.0 + 0 +LINE + 5 +86 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +393.6000366210937 + 30 +0.0 + 11 +509.1000061035156 + 21 +580.7000122070312 + 31 +0.0 + 0 +LINE + 5 +87 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +587.7999877929688 + 20 +370.9000244140625 + 30 +0.0 + 11 +616.0999755859375 + 21 +370.9000244140625 + 31 +0.0 + 0 +LINE + 5 +88 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +616.0999755859375 + 20 +370.9000244140625 + 30 +0.0 + 11 +616.0999755859375 + 21 +183.9000244140625 + 31 +0.0 + 0 +LINE + 5 +89 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +587.7999877929688 + 20 +183.9000244140625 + 30 +0.0 + 11 +616.0999755859375 + 21 +183.9000244140625 + 31 +0.0 + 0 +LWPOLYLINE + 5 +8A +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +609.0 + 20 +201.6000366210938 + 10 +594.9000244140624 + 20 +201.6000366210938 + 10 +594.9000244140624 + 20 +244.1000366210937 + 10 +609.0 + 20 +244.1000366210937 + 0 +LWPOLYLINE + 5 +8B +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +530.4000244140625 + 20 +598.7000274658202 + 10 +544.6000366210937 + 20 +598.7000274658202 + 10 +544.6000366210937 + 20 +584.5000305175781 + 10 +530.4000244140625 + 20 +584.5000305175781 + 0 +LWPOLYLINE + 5 +8C +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +530.2999877929687 + 20 +389.4000244140625 + 10 +544.5 + 20 +389.4000244140625 + 10 +544.5 + 20 +375.2000122070313 + 10 +530.2999877929687 + 20 +375.2000122070313 + 0 +LWPOLYLINE + 5 +8D +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +548.0999755859374 + 20 +455.2000122070312 + 10 +549.5 + 20 +455.2000122070312 + 10 +549.5 + 20 +412.7000122070312 + 10 +548.0999755859374 + 20 +412.7000122070312 + 0 +LWPOLYLINE + 5 +8E +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +548.0999755859374 + 20 +562.1000366210937 + 10 +549.5 + 20 +562.1000366210937 + 10 +549.5 + 20 +519.6000366210937 + 10 +548.0999755859374 + 20 +519.6000366210937 + 0 +LWPOLYLINE + 5 +8F +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +609.0 + 20 +310.7000122070313 + 10 +594.9000244140624 + 20 +310.7000122070313 + 10 +594.9000244140624 + 20 +353.2000122070312 + 10 +609.0 + 20 +353.2000122070312 + 0 +LINE + 5 +90 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +183.9000244140625 + 30 +0.0 + 11 +486.3999938964844 + 21 +183.9000244140625 + 31 +0.0 + 0 +LINE + 5 +91 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +509.1000061035156 + 20 +370.9000244140625 + 30 +0.0 + 11 +486.3999938964844 + 21 +370.9000244140625 + 31 +0.0 + 0 +LINE + 5 +92 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +486.3999938964844 + 20 +370.9000244140625 + 30 +0.0 + 11 +458.1000061035156 + 21 +370.9000244140625 + 31 +0.0 + 0 +LINE + 5 +93 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +458.1000061035156 + 20 +370.9000244140625 + 30 +0.0 + 11 +458.1000061035156 + 21 +183.9000244140625 + 31 +0.0 + 0 +LINE + 5 +94 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +486.3999938964844 + 20 +183.9000244140625 + 30 +0.0 + 11 +458.1000061035156 + 21 +183.9000244140625 + 31 +0.0 + 0 +LWPOLYLINE + 5 +95 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +465.1000061035156 + 20 +201.6000366210938 + 10 +479.2999877929687 + 20 +201.6000366210938 + 10 +479.2999877929687 + 20 +244.1000366210937 + 10 +465.1000061035156 + 20 +244.1000366210937 + 0 +INSERT + 5 +97 +330 +70 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +A3 +330 +70 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_2 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +AF +330 +70 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_4 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +BB +330 +70 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_6 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +C7 +330 +70 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_8 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +D3 +330 +70 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_10 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +DF +330 +70 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_12 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +INSERT + 5 +EB +330 +70 +100 +AcDbEntity + 8 +Layer 1 +100 +AcDbBlockReference + 2 +Block_14 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +LWPOLYLINE + 5 +F6 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +525.4000244140625 + 20 +455.2000122070312 + 10 +526.8000488281249 + 20 +455.2000122070312 + 10 +526.8000488281249 + 20 +412.7000122070312 + 10 +525.4000244140625 + 20 +412.7000122070312 + 0 +LWPOLYLINE + 5 +F7 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +525.4000244140625 + 20 +562.1000366210937 + 10 +526.8000488281249 + 20 +562.1000366210937 + 10 +526.8000488281249 + 20 +519.6000366210937 + 10 +525.4000244140625 + 20 +519.6000366210937 + 0 +LWPOLYLINE + 5 +F8 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 0 + 43 +0.0 + 10 +467.2999877929687 + 20 +310.7000122070313 + 10 +481.5 + 20 +310.7000122070313 + 10 +481.5 + 20 +353.2000122070312 + 10 +467.2999877929687 + 20 +353.2000122070312 + 0 +LWPOLYLINE + 5 +F9 +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +490.7000122070312 + 20 +363.8866446908068 + 10 +504.9000244140625 + 20 +363.8866446908068 + 10 +504.9000244140625 + 20 +349.6866324837756 + 10 +490.7000122070312 + 20 +349.6866324837756 + 0 +LINE + 5 +FA +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbLine + 10 +326.8999938964844 + 20 +683.4000244140625 + 30 +0.0 + 11 +752.0999755859374 + 21 +683.4000244140625 + 31 +0.0 + 0 +LWPOLYLINE + 5 +FB +330 +70 +100 +AcDbEntity + 8 +Layer 1 + 62 + 1 +420 + 16711680 +370 + 35 +100 +AcDbPolyline + 90 + 4 + 70 + 1 + 43 +0.0 + 10 +490.7000122070312 + 20 +206.1866446908061 + 10 +504.9000244140625 + 20 +206.1866446908061 + 10 +504.9000244140625 + 20 +191.9866324837748 + 10 +490.7000122070312 + 20 +191.9866324837748 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_COLOR +350 +63 + 3 +ACAD_DETAILVIEWSTYLE +350 +6A + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +62 + 3 +ACAD_MATERIAL +350 +10 + 3 +ACAD_MLEADERSTYLE +350 +66 + 3 +ACAD_MLINESTYLE +350 +5F + 3 +ACAD_PLOTSETTINGS +350 +61 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +42 + 3 +ACAD_SECTIONVIEWSTYLE +350 +68 + 3 +ACAD_TABLESTYLE +350 +64 + 3 +ACAD_VISUALSTYLE +350 +29 + 3 +ACDB_RECOMPOSE_DATA +350 +104 + 3 +AcDbVariableDictionary +350 +FC + 0 +DICTIONARY + 5 +63 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +6A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Imperial24 +350 +6B + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +62 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Layout1 +350 +6F + 3 +Layout2 +350 +77 + 3 +Model +350 +73 + 0 +DICTIONARY + 5 +10 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +ByBlock +350 +19 + 3 +ByLayer +350 +11 + 3 +Global +350 +21 + 0 +DICTIONARY + 5 +66 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +67 + 0 +DICTIONARY + 5 +5F +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +60 + 0 +DICTIONARY + 5 +61 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +42 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +43 + 3 +A1 +350 +44 + 3 +A2 +350 +45 + 3 +A3 +350 +46 + 3 +A4 +350 +47 + 3 +A5 +350 +48 + 3 +A6 +350 +49 + 3 +A7 +350 +4A + 3 +A8 +350 +4B + 3 +A9 +350 +4C + 3 +B0 +350 +4D + 3 +B1 +350 +4E + 3 +B2 +350 +4F + 3 +B3 +350 +50 + 3 +B4 +350 +51 + 3 +B5 +350 +52 + 3 +B6 +350 +53 + 0 +DICTIONARY + 5 +68 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Imperial24 +350 +69 + 0 +DICTIONARY + 5 +64 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +65 + 0 +DICTIONARY + 5 +29 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +2dWireframe +350 +2F + 3 +Basic +350 +2E + 3 +Brighten +350 +35 + 3 +ColorChange +350 +39 + 3 +Conceptual +350 +32 + 3 +Dim +350 +34 + 3 +EdgeColorOff +350 +41 + 3 +Facepattern +350 +38 + 3 +Flat +350 +2A + 3 +FlatWithEdges +350 +2B + 3 +Gouraud +350 +2C + 3 +GouraudWithEdges +350 +2D + 3 +Hidden +350 +31 + 3 +JitterOff +350 +3F + 3 +Linepattern +350 +37 + 3 +OverhangOff +350 +40 + 3 +Realistic +350 +33 + 3 +Shaded +350 +3E + 3 +Shaded with edges +350 +3D + 3 +Shades of Gray +350 +3A + 3 +Sketchy +350 +3B + 3 +Thicken +350 +36 + 3 +Wireframe +350 +30 + 3 +X-Ray +350 +3C + 0 +XRECORD + 5 +104 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbXrecord +280 + 1 + 90 + 1 +330 +65 + 0 +DICTIONARY + 5 +FC +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +101 + 3 +CMLEADERSTYLE +350 +FE + 3 +CTABLESTYLE +350 +FD + 3 +CVIEWDETAILSTYLE +350 +FF + 3 +CVIEWSECTIONSTYLE +350 +100 + 0 +ACDBDETAILVIEWSTYLE + 5 +6B +102 +{ACAD_REACTORS +330 +6A +102 +} +330 +6A +100 +AcDbModelDocViewStyle + 70 + 0 + 3 +Imperial24 +290 + 1 +300 +Imperial24 + 90 + 0 +100 +AcDbDetailViewStyle + 70 + 0 + 71 + 0 + 90 + 3 + 71 + 1 +340 +55 + 62 + 256 + 40 +0.24 +340 +0 + 62 + 256 + 40 +0.24 +300 + + 40 +0.36 +280 + 3 + 71 + 2 +340 +5D + 90 + 25 + 62 + 256 + 71 + 3 +340 +55 + 62 + 256 + 40 +0.24 + 90 + 1 + 40 +0.75 + 90 + 1 +300 +%<\AcVar ViewType \f "%tc1">% %<\AcVar ViewDetailId>%\PSCALE %<\AcVar ViewScale \f "%sn">% + 71 + 4 +340 +5D + 90 + 25 + 62 + 256 +340 +5D + 90 + 25 + 62 + 256 +280 + 0 + 0 +LAYOUT + 5 +6F +102 +{ACAD_REACTORS +330 +62 +102 +} +330 +62 +100 +AcDbPlotSettings + 1 + + 2 + + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 688 + 72 + 0 + 73 + 0 + 74 + 5 + 7 + + 75 + 16 +147 +1.0 + 76 + 0 + 77 + 2 + 78 + 300 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +6C + 0 +LAYOUT + 5 +77 +102 +{ACAD_REACTORS +330 +62 +102 +} +330 +62 +100 +AcDbPlotSettings + 1 + + 2 + + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 688 + 72 + 0 + 73 + 0 + 74 + 5 + 7 + + 75 + 16 +147 +1.0 + 76 + 0 + 77 + 2 + 78 + 300 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout2 + 70 + 1 + 71 + 2 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +74 + 0 +LAYOUT + 5 +73 +102 +{ACAD_REACTORS +330 +62 +102 +} +330 +62 +100 +AcDbPlotSettings + 1 + + 2 + + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 1712 + 72 + 0 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 +147 +1.0 + 76 + 0 + 77 + 2 + 78 + 300 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +70 + 0 +MATERIAL + 5 +19 +102 +{ACAD_XDICTIONARY +360 +1A +102 +} +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +ByBlock + 72 + 0 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 77 + 0 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 +171 + 0 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 +175 + 0 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +179 + 0 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 + 0 +MATERIAL + 5 +11 +102 +{ACAD_XDICTIONARY +360 +12 +102 +} +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +ByLayer + 72 + 0 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 77 + 0 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 +171 + 0 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 +175 + 0 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +179 + 0 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 + 0 +MATERIAL + 5 +21 +102 +{ACAD_XDICTIONARY +360 +22 +102 +} +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMaterial + 1 +Global + 72 + 0 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 77 + 0 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 +171 + 0 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 +175 + 0 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +179 + 0 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 + 0 +MLEADERSTYLE + 5 +67 +102 +{ACAD_REACTORS +330 +66 +102 +} +330 +66 +100 +AcDbMLeaderStyle +179 + 2 +170 + 2 +171 + 1 +172 + 0 + 90 + 2 + 40 +0.0 + 41 +0.0 +173 + 1 + 91 +-1056964608 +340 +5B + 92 + -2 +290 + 1 + 42 +0.09 +291 + 1 + 43 +0.36 + 3 +Standard + 44 +0.18 +300 + +342 +55 +174 + 1 +178 + 6 +175 + 1 +176 + 0 + 93 +-1056964608 + 45 +0.18 +292 + 0 +297 + 0 + 46 +0.18 + 94 +-1056964608 + 47 +1.0 + 49 +1.0 +140 +1.0 +293 + 1 +141 +0.0 +294 + 1 +177 + 0 +142 +1.0 +295 + 1 +296 + 0 +143 +0.125 +271 + 0 +272 + 9 +273 + 9 +298 + 1 + 0 +MLINESTYLE + 5 +60 +102 +{ACAD_REACTORS +330 +5F +102 +} +330 +5F +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +SCALE + 5 +43 +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +44 +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +45 +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +46 +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +47 +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +48 +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +49 +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4A +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4B +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4C +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4D +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4E +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +4F +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +50 +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +51 +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +52 +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +53 +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +ACDBSECTIONVIEWSTYLE + 5 +69 +102 +{ACAD_REACTORS +330 +68 +102 +} +330 +68 +100 +AcDbModelDocViewStyle + 70 + 0 + 3 +Imperial24 +290 + 1 +300 +Imperial24 + 90 + 0 +100 +AcDbSectionViewStyle + 70 + 0 + 71 + 0 + 90 + 78 + 71 + 1 +340 +55 + 62 + 256 + 40 +0.24 +340 +0 +340 +0 + 62 + 256 + 40 +0.24 +300 +I, O, Q, S, X, Z + 40 +0.48 + 90 + 3 + 40 +0.18 + 90 + 1 + 71 + 2 +340 +5D + 90 + 25 + 62 + 256 +340 +5D + 90 + 50 + 62 + 256 + 40 +0.24 + 40 +0.0 + 40 +0.24 + 71 + 3 +340 +55 + 62 + 256 + 40 +0.24 + 90 + 1 + 40 +0.75 + 90 + 1 +300 +%<\AcVar ViewType \f "%tc1">% %<\AcVar ViewSectionStartId>%-%<\AcVar ViewSectionEndId>%\PSCALE %<\AcVar ViewScale \f "%sn">% + 71 + 4 + 62 + 256 + 62 + 257 +300 +ANSI31 + 40 +1.0 + 90 + 0 +290 + 0 +290 + 0 + 90 + 6 + 40 +0.0 + 40 +1.570796326794896 + 40 +0.2617993877991494 + 40 +1.308996938995747 + 40 +-0.2617993877991494 + 40 +1.832595714594046 + 0 +TABLESTYLE + 5 +65 +102 +{ACAD_XDICTIONARY +360 +102 +102 +} +102 +{ACAD_REACTORS +330 +64 +102 +} +330 +64 +100 +AcDbTableStyle +280 + 0 + 3 +Standard + 70 + 0 + 71 + 0 + 40 +0.06 + 41 +0.06 +280 + 0 +281 + 0 + 7 +Standard +140 +0.18 +170 + 2 + 62 + 0 + 63 + 7 +283 + 0 + 90 + 512 + 91 + 0 + 1 + +274 + -2 +284 + 1 + 64 + 0 +275 + -2 +285 + 1 + 65 + 0 +276 + -2 +286 + 1 + 66 + 0 +277 + -2 +287 + 1 + 67 + 0 +278 + -2 +288 + 1 + 68 + 0 +279 + -2 +289 + 1 + 69 + 0 + 7 +Standard +140 +0.25 +170 + 5 + 62 + 0 + 63 + 7 +283 + 0 + 90 + 512 + 91 + 0 + 1 + +274 + -2 +284 + 1 + 64 + 0 +275 + -2 +285 + 1 + 65 + 0 +276 + -2 +286 + 1 + 66 + 0 +277 + -2 +287 + 1 + 67 + 0 +278 + -2 +288 + 1 + 68 + 0 +279 + -2 +289 + 1 + 69 + 0 + 7 +Standard +140 +0.18 +170 + 5 + 62 + 0 + 63 + 7 +283 + 0 + 90 + 512 + 91 + 0 + 1 + +274 + -2 +284 + 1 + 64 + 0 +275 + -2 +285 + 1 + 65 + 0 +276 + -2 +286 + 1 + 66 + 0 +277 + -2 +287 + 1 + 67 + 0 +278 + -2 +288 + 1 + 68 + 0 +279 + -2 +289 + 1 + 69 + 0 + 0 +VISUALSTYLE + 5 +2F +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +2dWireframe + 70 + 4 +177 + 3 +291 + 0 + 70 + 58 + 90 + 0 +176 + 1 + 90 + 2 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 1 +176 + 1 + 90 + 4 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 257 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +2E +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Basic + 70 + 7 +177 + 3 +291 + 1 + 70 + 58 + 90 + 1 +176 + 1 + 90 + 0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 0 +176 + 1 + 90 + 4 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +35 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Brighten + 70 + 12 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 1 +176 + 1 + 90 + 4 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +50.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +39 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +ColorChange + 70 + 16 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 3 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 8 +420 + 8421504 +176 + 1 + 90 + 1 +176 + 1 + 90 + 4 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 8 +420 + 8421504 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +32 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Conceptual + 70 + 9 +177 + 3 +291 + 0 + 70 + 58 + 90 + 3 +176 + 1 + 90 + 2 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +179.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 3 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +34 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Dim + 70 + 11 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 1 +176 + 1 + 90 + 4 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +-50.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +41 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +EdgeColorOff + 70 + 22 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 0 + 90 + 2 +176 + 0 + 90 + 0 +176 + 0 + 90 + 0 +176 + 0 + 40 +0.6 +176 + 0 + 40 +30.0 +176 + 0 + 62 + 7 +420 + 16777215 +176 + 0 + 90 + 1 +176 + 0 + 90 + 4 +176 + 0 + 62 + 7 +176 + 0 + 62 + 257 +176 + 0 + 90 + 1 +176 + 0 + 90 + 1 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 8 +176 + 2 + 62 + 7 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 1 +176 + 0 + 90 + 6 +176 + 0 + 90 + 2 +176 + 0 + 62 + 7 +176 + 0 + 90 + 5 +176 + 0 + 90 + 0 +176 + 0 + 90 + 0 +176 + 0 +290 + 0 +176 + 0 + 90 + 1 +176 + 0 + 40 +0.0 +176 + 0 + 90 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 1 +176 + 0 +290 + 1 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 + 90 + 50 +176 + 0 + 40 +0.0 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 0 +176 + 0 + 62 + 18 +420 + 0 +176 + 0 + 90 + 50 +176 + 0 + 90 + 3 +176 + 0 + 62 + 5 +420 + 255 +176 + 0 +290 + 0 +176 + 0 + 90 + 50 +176 + 0 + 90 + 50 +176 + 0 + 90 + 50 +176 + 0 +290 + 0 +176 + 0 + 90 + 50 +176 + 0 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 0 + 1 +strokes_ogs.tif +176 + 0 +290 + 0 +176 + 0 + 40 +1.0 +176 + 0 + 40 +1.0 +176 + 0 + 0 +VISUALSTYLE + 5 +38 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Facepattern + 70 + 15 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 1 +176 + 1 + 90 + 4 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +2A +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Flat + 70 + 0 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 90 + 2 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 13 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +2B +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +FlatWithEdges + 70 + 1 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 90 + 2 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 1 +176 + 1 + 90 + 0 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 257 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 13 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +2C +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Gouraud + 70 + 2 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 1 +176 + 1 + 90 + 2 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 13 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +2D +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +GouraudWithEdges + 70 + 3 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 1 +176 + 1 + 90 + 2 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 1 +176 + 1 + 90 + 0 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 257 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 13 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +31 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Hidden + 70 + 6 +177 + 3 +291 + 0 + 70 + 58 + 90 + 1 +176 + 1 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 2 +176 + 1 + 90 + 1 +176 + 1 + 40 +40.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 257 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 3 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +3F +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +JitterOff + 70 + 20 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 0 + 90 + 2 +176 + 0 + 90 + 0 +176 + 0 + 90 + 0 +176 + 0 + 40 +0.6 +176 + 0 + 40 +30.0 +176 + 0 + 62 + 7 +420 + 16777215 +176 + 0 + 90 + 1 +176 + 0 + 90 + 4 +176 + 0 + 62 + 7 +176 + 0 + 62 + 257 +176 + 0 + 90 + 1 +176 + 0 + 90 + 1 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 10 +176 + 2 + 62 + 7 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 1 +176 + 0 + 90 + 6 +176 + 0 + 90 + 2 +176 + 0 + 62 + 7 +176 + 0 + 90 + 5 +176 + 0 + 90 + 0 +176 + 0 + 90 + 0 +176 + 0 +290 + 0 +176 + 0 + 90 + 1 +176 + 0 + 40 +0.0 +176 + 0 + 90 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 1 +176 + 0 +290 + 1 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 + 90 + 50 +176 + 0 + 40 +0.0 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 0 +176 + 0 + 62 + 18 +420 + 0 +176 + 0 + 90 + 50 +176 + 0 + 90 + 3 +176 + 0 + 62 + 5 +420 + 255 +176 + 0 +290 + 0 +176 + 0 + 90 + 50 +176 + 0 + 90 + 50 +176 + 0 + 90 + 50 +176 + 0 +290 + 0 +176 + 0 + 90 + 50 +176 + 0 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 0 + 1 +strokes_ogs.tif +176 + 0 +290 + 0 +176 + 0 + 40 +1.0 +176 + 0 + 40 +1.0 +176 + 0 + 0 +VISUALSTYLE + 5 +37 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Linepattern + 70 + 14 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 1 +176 + 1 + 90 + 4 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 7 +176 + 1 + 90 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +40 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +OverhangOff + 70 + 21 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 0 + 90 + 2 +176 + 0 + 90 + 0 +176 + 0 + 90 + 0 +176 + 0 + 40 +0.6 +176 + 0 + 40 +30.0 +176 + 0 + 62 + 7 +420 + 16777215 +176 + 0 + 90 + 1 +176 + 0 + 90 + 4 +176 + 0 + 62 + 7 +176 + 0 + 62 + 257 +176 + 0 + 90 + 1 +176 + 0 + 90 + 1 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 9 +176 + 2 + 62 + 7 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 1 +176 + 0 + 90 + 6 +176 + 0 + 90 + 2 +176 + 0 + 62 + 7 +176 + 0 + 90 + 5 +176 + 0 + 90 + 0 +176 + 0 + 90 + 0 +176 + 0 +290 + 0 +176 + 0 + 90 + 1 +176 + 0 + 40 +0.0 +176 + 0 + 90 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 1 +176 + 0 +290 + 1 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 +290 + 0 +176 + 0 + 90 + 50 +176 + 0 + 40 +0.0 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 0 +176 + 0 + 62 + 18 +420 + 0 +176 + 0 + 90 + 50 +176 + 0 + 90 + 3 +176 + 0 + 62 + 5 +420 + 255 +176 + 0 +290 + 0 +176 + 0 + 90 + 50 +176 + 0 + 90 + 50 +176 + 0 + 90 + 50 +176 + 0 +290 + 0 +176 + 0 + 90 + 50 +176 + 0 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 0 + 1 +strokes_ogs.tif +176 + 0 +290 + 0 +176 + 0 + 40 +1.0 +176 + 0 + 40 +1.0 +176 + 0 + 0 +VISUALSTYLE + 5 +33 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Realistic + 70 + 8 +177 + 3 +291 + 0 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 3 +176 + 1 + 90 + 0 +176 + 1 + 90 + 2 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 257 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 3 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 13 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +3E +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Shaded + 70 + 27 +177 + 3 +291 + 0 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 1 +176 + 1 + 90 + 2 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 0 +176 + 1 + 90 + 4 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 257 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 8 +420 + 7895160 +176 + 1 + 90 + 3 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 5 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +3D +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Shaded with edges + 70 + 26 +177 + 3 +291 + 0 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 1 +176 + 1 + 90 + 2 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 1 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 2 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 257 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 3 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 5 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +3A +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Shades of Gray + 70 + 23 +177 + 3 +291 + 0 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 3 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 62 + 7 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +40.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 3 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +3B +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Sketchy + 70 + 24 +177 + 3 +291 + 0 + 70 + 58 + 90 + 1 +176 + 1 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 62 + 7 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +40.0 +176 + 1 + 90 + 11 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 6 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +36 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Thicken + 70 + 13 +177 + 3 +291 + 1 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 1 +176 + 1 + 90 + 4 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 12 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 5 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +30 +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +Wireframe + 70 + 5 +177 + 3 +291 + 0 + 70 + 58 + 90 + 0 +176 + 1 + 90 + 2 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 + 40 +0.6 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 1 +176 + 1 + 90 + 4 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 257 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 3 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +VISUALSTYLE + 5 +3C +102 +{ACAD_REACTORS +330 +29 +102 +} +330 +29 +100 +AcDbVisualStyle + 2 +X-Ray + 70 + 25 +177 + 3 +291 + 0 + 70 + 58 + 90 + 2 +176 + 1 + 90 + 2 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +0.5 +176 + 1 + 40 +30.0 +176 + 1 + 62 + 7 +420 + 16777215 +176 + 1 + 90 + 1 +176 + 1 + 90 + 0 +176 + 1 + 62 + 7 +176 + 1 + 62 + 257 +176 + 1 + 90 + 1 +176 + 1 + 90 + 1 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 8 +176 + 1 + 62 + 7 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 1 +176 + 1 + 90 + 6 +176 + 1 + 90 + 2 +176 + 1 + 62 + 7 +176 + 1 + 90 + 3 +176 + 1 + 90 + 0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 13 +176 + 1 + 40 +0.0 +176 + 1 + 90 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 1 +176 + 1 +290 + 1 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 40 +0.0 +176 + 1 + 40 +1.0 +176 + 1 + 90 + 0 +176 + 1 + 62 + 18 +420 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 3 +176 + 1 + 62 + 5 +420 + 255 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 + 90 + 50 +176 + 1 +290 + 0 +176 + 1 + 90 + 50 +176 + 1 + 62 + 256 +176 + 0 + 40 +1.0 +176 + 0 + 90 + 2 +176 + 1 + 1 +strokes_ogs.tif +176 + 1 +290 + 0 +176 + 1 + 40 +1.0 +176 + 1 + 40 +1.0 +176 + 1 + 0 +DICTIONARYVAR + 5 +101 +102 +{ACAD_REACTORS +330 +FC +102 +} +330 +FC +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +DICTIONARYVAR + 5 +FE +102 +{ACAD_REACTORS +330 +FC +102 +} +330 +FC +100 +DictionaryVariables +280 + 0 + 1 +STANDARD + 0 +DICTIONARYVAR + 5 +FD +102 +{ACAD_REACTORS +330 +FC +102 +} +330 +FC +100 +DictionaryVariables +280 + 0 + 1 +STANDARD + 0 +DICTIONARYVAR + 5 +FF +102 +{ACAD_REACTORS +330 +FC +102 +} +330 +FC +100 +DictionaryVariables +280 + 0 + 1 +Imperial24 + 0 +DICTIONARYVAR + 5 +100 +102 +{ACAD_REACTORS +330 +FC +102 +} +330 +FC +100 +DictionaryVariables +280 + 0 + 1 +Imperial24 + 0 +DICTIONARY + 5 +1A +330 +19 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +BUMPTILE +360 +1C + 3 +DIFFUSETILE +360 +1B + 3 +OPACITYTILE +360 +1F + 3 +REFLECTIONTILE +360 +1E + 3 +REFRACTIONTILE +360 +20 + 3 +SPECULARTILE +360 +1D + 0 +DICTIONARY + 5 +12 +330 +11 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +BUMPTILE +360 +14 + 3 +DIFFUSETILE +360 +13 + 3 +OPACITYTILE +360 +17 + 3 +REFLECTIONTILE +360 +16 + 3 +REFRACTIONTILE +360 +18 + 3 +SPECULARTILE +360 +15 + 0 +DICTIONARY + 5 +22 +330 +21 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +BUMPTILE +360 +24 + 3 +DIFFUSETILE +360 +23 + 3 +OPACITYTILE +360 +27 + 3 +REFLECTIONTILE +360 +26 + 3 +REFRACTIONTILE +360 +28 + 3 +SPECULARTILE +360 +25 + 0 +DICTIONARY + 5 +102 +330 +65 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_ROUNDTRIP_2008_TABLESTYLE_CELLSTYLEMAP +360 +103 + 0 +XRECORD + 5 +1C +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +1B +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +1F +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +20 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +1D +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +14 +102 +{ACAD_REACTORS +330 +12 +102 +} +330 +12 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +13 +102 +{ACAD_REACTORS +330 +12 +102 +} +330 +12 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +17 +102 +{ACAD_REACTORS +330 +12 +102 +} +330 +12 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +16 +102 +{ACAD_REACTORS +330 +12 +102 +} +330 +12 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +18 +102 +{ACAD_REACTORS +330 +12 +102 +} +330 +12 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +15 +102 +{ACAD_REACTORS +330 +12 +102 +} +330 +12 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +24 +102 +{ACAD_REACTORS +330 +22 +102 +} +330 +22 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +23 +102 +{ACAD_REACTORS +330 +22 +102 +} +330 +22 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +27 +102 +{ACAD_REACTORS +330 +22 +102 +} +330 +22 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +26 +102 +{ACAD_REACTORS +330 +22 +102 +} +330 +22 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +28 +102 +{ACAD_REACTORS +330 +22 +102 +} +330 +22 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +25 +102 +{ACAD_REACTORS +330 +22 +102 +} +330 +22 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +CELLSTYLEMAP + 5 +103 +102 +{ACAD_REACTORS +330 +102 +102 +} +330 +102 +100 +AcDbCellStyleMap + 90 + 3 +300 +CELLSTYLE + 1 +TABLEFORMAT_BEGIN + 90 + 5 +170 + 1 + 91 + 0 + 92 + 32768 + 62 + 257 + 93 + 1 +300 +CONTENTFORMAT + 1 +CONTENTFORMAT_BEGIN + 90 + 0 + 91 + 0 + 92 + 512 + 93 + 0 +300 + + 40 +0.0 +140 +1.0 + 94 + 5 + 62 + 0 +340 +55 +144 +0.25 +309 +CONTENTFORMAT_END +171 + 0 + 94 + 0 +309 +TABLEFORMAT_END + 1 +CELLSTYLE_BEGIN + 90 + 1 + 91 + 1 +300 +_TITLE +309 +CELLSTYLE_END +300 +CELLSTYLE + 1 +TABLEFORMAT_BEGIN + 90 + 5 +170 + 1 + 91 + 0 + 92 + 0 + 62 + 257 + 93 + 1 +300 +CONTENTFORMAT + 1 +CONTENTFORMAT_BEGIN + 90 + 0 + 91 + 0 + 92 + 512 + 93 + 0 +300 + + 40 +0.0 +140 +1.0 + 94 + 5 + 62 + 0 +340 +55 +144 +0.18 +309 +CONTENTFORMAT_END +171 + 0 + 94 + 0 +309 +TABLEFORMAT_END + 1 +CELLSTYLE_BEGIN + 90 + 2 + 91 + 1 +300 +_HEADER +309 +CELLSTYLE_END +300 +CELLSTYLE + 1 +TABLEFORMAT_BEGIN + 90 + 5 +170 + 1 + 91 + 0 + 92 + 0 + 62 + 257 + 93 + 1 +300 +CONTENTFORMAT + 1 +CONTENTFORMAT_BEGIN + 90 + 0 + 91 + 0 + 92 + 512 + 93 + 0 +300 + + 40 +0.0 +140 +1.0 + 94 + 2 + 62 + 0 +340 +55 +144 +0.18 +309 +CONTENTFORMAT_END +171 + 0 + 94 + 0 +309 +TABLEFORMAT_END + 1 +CELLSTYLE_BEGIN + 90 + 3 + 91 + 2 +300 +_DATA +309 +CELLSTYLE_END + 0 +ENDSEC + 0 +EOF diff --git a/3D Design/battery case (origami)/battery_3.studio3 b/3D Design/battery case (origami)/battery_3.studio3 new file mode 100644 index 0000000000000000000000000000000000000000..03a884e5ec85225cf7b41bb3cefe31c722aad762 Binary files /dev/null and b/3D Design/battery case (origami)/battery_3.studio3 differ diff --git a/3D Design/gondola/.gitkeep b/3D Design/gondola/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/3D Design/gondola/camera_holder.SLDPRT b/3D Design/gondola/camera_holder.SLDPRT new file mode 100644 index 0000000000000000000000000000000000000000..aa4bbaa431f7caaceb350bc0f84831eb50ceb4a5 Binary files /dev/null and b/3D Design/gondola/camera_holder.SLDPRT differ diff --git a/3D Design/gondola/camera_holder_2mm_45cm.STL b/3D Design/gondola/camera_holder_2mm_45cm.STL new file mode 100644 index 0000000000000000000000000000000000000000..3bcde50a917661a6f9540dd969d6efedc1f686ed Binary files /dev/null and b/3D Design/gondola/camera_holder_2mm_45cm.STL differ diff --git a/3D Design/gondola/camera_holder_2mm_60cm.STL b/3D Design/gondola/camera_holder_2mm_60cm.STL new file mode 100644 index 0000000000000000000000000000000000000000..2b426be5ec8803989f7506c23e8adfd75ea1827c Binary files /dev/null and b/3D Design/gondola/camera_holder_2mm_60cm.STL differ diff --git a/3D Design/gondola/gondola-new-28.sldprt b/3D Design/gondola/gondola-new-28.sldprt new file mode 100644 index 0000000000000000000000000000000000000000..867ab99d9fbc4982627eca3d911e7bbaf0a5fad5 Binary files /dev/null and b/3D Design/gondola/gondola-new-28.sldprt differ diff --git a/3D Design/joints/pentacross.SLDPRT b/3D Design/joints/pentacross.SLDPRT new file mode 100644 index 0000000000000000000000000000000000000000..90cc7e04f93f99ba466991b36d902032641ab4c6 Binary files /dev/null and b/3D Design/joints/pentacross.SLDPRT differ diff --git a/3D Design/joints/pentagon_corner.SLDPRT b/3D Design/joints/pentagon_corner.SLDPRT new file mode 100644 index 0000000000000000000000000000000000000000..569eab31c7b27ce8c235f27228b333ee89901376 Binary files /dev/null and b/3D Design/joints/pentagon_corner.SLDPRT differ diff --git a/3D Design/joints/pentagon_corner_tilt.STL b/3D Design/joints/pentagon_corner_tilt.STL new file mode 100644 index 0000000000000000000000000000000000000000..b732d6dcdbe2438ccfeeac0ab2b61073d0ce1a7c Binary files /dev/null and b/3D Design/joints/pentagon_corner_tilt.STL differ diff --git a/Code/Ball_Detection/PyTorch_with_ESPCAM/__pycache__/live_full_detection_detecto_with_ESP_CAM.cpython-38.pyc b/Code/Ball_Detection/PyTorch_with_ESPCAM/__pycache__/live_full_detection_detecto_with_ESP_CAM.cpython-38.pyc deleted file mode 100644 index f5e9981d7805188c3ba7b472e05e09a229bef741..0000000000000000000000000000000000000000 Binary files a/Code/Ball_Detection/PyTorch_with_ESPCAM/__pycache__/live_full_detection_detecto_with_ESP_CAM.cpython-38.pyc and /dev/null differ diff --git a/Code/Ball_Detection/PyTorch_with_ESPCAM/distance-detection-torch/__pycache__/distance-detection-torch.cpython-37.pyc b/Code/Ball_Detection/PyTorch_with_ESPCAM/distance-detection-torch/__pycache__/distance-detection-torch.cpython-37.pyc deleted file mode 100644 index 15074c01936803cb3f82c21ccc10d16c30f590b8..0000000000000000000000000000000000000000 Binary files a/Code/Ball_Detection/PyTorch_with_ESPCAM/distance-detection-torch/__pycache__/distance-detection-torch.cpython-37.pyc and /dev/null differ diff --git a/Code/Ball_Detection/PyTorch_with_ESPCAM/distance-detection-torch/__pycache__/distance-detection-torch.cpython-38.pyc b/Code/Ball_Detection/PyTorch_with_ESPCAM/distance-detection-torch/__pycache__/distance-detection-torch.cpython-38.pyc deleted file mode 100644 index 3af578fded08e9e4613e8f771d9562ec3fb4b35d..0000000000000000000000000000000000000000 Binary files a/Code/Ball_Detection/PyTorch_with_ESPCAM/distance-detection-torch/__pycache__/distance-detection-torch.cpython-38.pyc and /dev/null differ diff --git a/Code/Ball_Detection/PyTorch_with_ESPCAM/distance-detection-torch/__pycache__/distance-detection-torch.cpython-39.pyc b/Code/Ball_Detection/PyTorch_with_ESPCAM/distance-detection-torch/__pycache__/distance-detection-torch.cpython-39.pyc deleted file mode 100644 index fcdd636e498337848c876a23064d8b9d0249b646..0000000000000000000000000000000000000000 Binary files a/Code/Ball_Detection/PyTorch_with_ESPCAM/distance-detection-torch/__pycache__/distance-detection-torch.cpython-39.pyc and /dev/null differ diff --git a/Code/Ball_Detection/PyTorch_with_ESPCAM/live_full_detection_detecto_with_ESP_CAM.py b/Code/Ball_Detection/PyTorch_with_ESPCAM/live_full_detection_detecto_with_ESP_CAM.py index 45d0f4b2294d296db2ec3e29f96ee79bcc7b8ca3..02162c2798d384488bd7d5e411b7b84db40ffa23 100644 --- a/Code/Ball_Detection/PyTorch_with_ESPCAM/live_full_detection_detecto_with_ESP_CAM.py +++ b/Code/Ball_Detection/PyTorch_with_ESPCAM/live_full_detection_detecto_with_ESP_CAM.py @@ -18,7 +18,7 @@ from matplotlib import patches from detecto import core, utils from torchvision import transforms from matplotlib import pyplot as plt -from IPython.display import Image, display, Javascript +# from IPython.display import Image, display, Javascript distanceDetect = __import__('distance-detection-torch.distance-detection-torch', fromlist = ['distanceDetect']).distanceDetect print("torch.cuda.is_available() = ", torch.cuda.is_available()) @@ -26,22 +26,20 @@ print("torch.cuda.is_available() = ", torch.cuda.is_available()) #change the IP address below according to the #IP shown in the Serial monitor of Arduino code # url='http://192.168.1.107/cam-lo.jpg' -url='http://192.168.4.1/cam-hi.jpg' +# url='http://192.168.4.1/cam-hi.jpg' # url='http://192.168.1.107/cam-mid.jpg' - +url='http://192.168.0.230/cam-hi.jpg' #### Modify Detecto Core to include possibility of other base models def modifyCore(): - cModLineNums = [221, 254] + cModLineNums = [221, 253, 254] cAddLineNums = [254, 256, 257, 258, 259] # REPLACABLE LINE FOR DIFFERENT LOCAL COMPUTER DEVICES - coreFile = 'C:\\Users\\uclal\\.conda\\envs\\FORAY\\Lib\\site-packages\\detecto\\core.py' - - - print('debug') + coreFile = 'C:\\Users\\uclal\\.conda\\envs\\foray2\\Lib\\site-packages\\detecto\\core.py' cModLineVals = [" def __init__(self, classes=None, device=None, pretrained=True, modelname=\'fasterrcnn_resnet50_fpn\'):\n", + " # Load a model pre-trained on COCO - User-Modified", " self._model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=pretrained)\n"] cAddLineVals = [" if modelname == \'fasterrcnn_resnet50_fpn\':\n", " elif modelname == \'fasterrcnn_mobilenet_v3_large_fpn\':\n", @@ -146,7 +144,7 @@ def detectLive(model, showSight = True): #print(frame) gbx = -1 gby = -1 - + header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36."} req = Request(url, headers=header) img_resp = urlopen(req, timeout=60) @@ -265,13 +263,13 @@ distWtsFile = '.\distance-detection-torch\distance-detection-weights-3-2.0sd-202 modelAction = 'load' # 'load' to load previous model, 'new' to train new model (only possible on Colab) #FOR THE NEXT LINE : UNCOMMENT the first time you run, COMMENT OUT after the first time -#modifyCore() +# modifyCore() ######### -# model = returnModel(modelAction, device, trainLoc, labelSet, modelLoc, modelFile) -# # # ## Testing (using Live Streaming) -# while True: -# detectLive(model) +model = returnModel(modelAction, device, trainLoc, labelSet, modelLoc, modelFile) +# # ## Testing (using Live Streaming) +while True: + detectLive(model) # ## Testing (using Untrained Images) # for file in sorted(glob.glob(imageLoc + '/test/*.jpg')): diff --git a/Code/Control/Laptop_Code/ESP32_AT/imageTread_AT.py b/Code/Control/Laptop_Code/ESP32_AT/imageTread_AT.py index ffc43e3acb9d452260fda2c852ede3cd74610dc3..f17cf50b98ea65da0647eafb4182d8a98671f471 100644 --- a/Code/Control/Laptop_Code/ESP32_AT/imageTread_AT.py +++ b/Code/Control/Laptop_Code/ESP32_AT/imageTread_AT.py @@ -11,7 +11,7 @@ def nothing(x): # detector = apriltag.Detector() - +detector = Detector() def get_AT_6DOF_info(url): tid,tx,ty,tz= 0,100000,100000,0 @@ -36,7 +36,8 @@ def get_AT_6DOF_info(url): fy = 600 cx = 400 cy = 300 - AT_size = 0.16 + #AT_size = 0.16 + AT_size = 0.74 results = detector.detect(gray_image, estimate_tag_pose=True, camera_params=[fx, fy, cx, cy], tag_size=AT_size) debug_print = 0 for r in results: @@ -64,8 +65,8 @@ def get_AT_6DOF_info(url): tagFamily = r.tag_family.decode("utf-8") - - + + cv2.putText(frame, tagFamily, (ptA[0], ptA[1] - 15), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) cv2.putText(frame, "tx: {:.2f} ty: {:.2f} tz:{:.2f}".format(tx[0], ty[0], tz[0]), (ptA[0], ptA[1] + 30), @@ -97,6 +98,11 @@ if __name__ == "__main__": # url='http://192.168.1.107/cam-hi.jpg' url='http://192.168.4.1/cam-hi.jpg' url = 'http://192.168.1.118/cam-hi.jpg' + url = 'http://10.0.0.3/cam-hi.jpg' #03 + url = 'http://10.0.0.5/cam-hi.jpg' #01 + url = 'http://10.0.0.6/cam-hi.jpg' #02 + url = 'http://10.0.0.7/cam-hi.jpg' #06 + # cv2.namedWindow("live transmission", cv2.WINDOW_AUTOSIZE) diff --git a/Code/Control/Laptop_Code/ESP32_slave/ESP32_slave.ino b/Code/Control/Laptop_Code/ESP32_slave/ESP32_slave.ino index c32e3b41b30ed8d5dc0e58491546bf190020a22c..f79c97c83061e6cf1f75ad7859c7af98c83b4f03 100644 --- a/Code/Control/Laptop_Code/ESP32_slave/ESP32_slave.ino +++ b/Code/Control/Laptop_Code/ESP32_slave/ESP32_slave.ino @@ -121,7 +121,7 @@ void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) { //Create the interface that will be used by the camera openmv::rpc_scratch_buffer<256> scratch_buffer; // All RPC objects share this buffer. openmv::rpc_i2c_master interface(0x12, 100000); //to make this more robust, consider making address and rate as constructor argument -Camera cam(&interface); +//Camera cam(&interface); // ========================== Motor part ==================================== // Create the motor shield object with the default I2C address Adafruit_MotorShield AFMS = Adafruit_MotorShield(); @@ -195,7 +195,7 @@ void loop() int y = 0; bool goalfind_flag = 0; - goalfind_flag = cam.exe_goalfinder(goal_id[0],goal_id[1],goal_id[2], id, tx, ty, tz, rx, ry, rz); +// goalfind_flag = cam.exe_goalfinder(goal_id[0],goal_id[1],goal_id[2], id, tx, ty, tz, rx, ry, rz); if (goalfind_flag){ Sent_tx = tx; Sent_ty = ty; diff --git a/Code/Control/Laptop_Code/README.md b/Code/Control/Laptop_Code/README.md index fbdeb708b80ea00c3bc27feea54f787ba6ad518a..845e17a57dd345dc824cfb7973920bf23e921e4b 100644 --- a/Code/Control/Laptop_Code/README.md +++ b/Code/Control/Laptop_Code/README.md @@ -70,8 +70,12 @@ pip install opencv-python conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch # install pupil-apriltags pip install pupil-apriltags +# install detecto +pip install detecto==1.2.1 ``` + + ## 3 Main_code There are two files about main code: diff --git a/Code/Control/Laptop_Code/ball_detection/ball_detection.py b/Code/Control/Laptop_Code/ball_detection/ball_detection.py index 7d5728d52d0b69f0d48f66d4ccdccfa0337ca21a..8e8f45f471757e00a417702f16a0127860554b28 100644 --- a/Code/Control/Laptop_Code/ball_detection/ball_detection.py +++ b/Code/Control/Laptop_Code/ball_detection/ball_detection.py @@ -18,14 +18,44 @@ from matplotlib import patches from detecto import core, utils from torchvision import transforms from matplotlib import pyplot as plt -from IPython.display import Image, display, Javascript distanceDetect = __import__('ball_detection.distance-detection-torch.distance-detection-torch', fromlist = ['distanceDetect']).distanceDetect # print("torch.cuda.is_available() = ", torch.cuda.is_available()) # change the IP address below according to the IP shown in the Serial monitor of Arduino code # url='http://192.168.1.107/cam-lo.jpg' -url='http://192.168.4.1/cam-hi.jpg' +# url='http://192.168.4.1/cam-hi.jpg' # url='http://192.168.1.107/cam-mid.jpg' +# url='http://192.168.0.204/cam-hi.jpg' # url2 + +#### Modify Detecto Core to include possibility of other base models +def modifyCore(): + cModLineNums = [221, 253, 254] + cAddLineNums = [254, 256, 257, 258, 259] + + # REPLACABLE LINE FOR DIFFERENT LOCAL COMPUTER DEVICES + coreFile = 'C:\\Users\\uclal\\.conda\\envs\\foray2\\Lib\\site-packages\\detecto\\core.py' + + cModLineVals = [" def __init__(self, classes=None, device=None, pretrained=True, modelname=\'fasterrcnn_resnet50_fpn\'):\n", + " # Load a model pre-trained on COCO - User-Modified", + " self._model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=pretrained)\n"] + cAddLineVals = [" if modelname == \'fasterrcnn_resnet50_fpn\':\n", + " elif modelname == \'fasterrcnn_mobilenet_v3_large_fpn\':\n", + " self._model = torchvision.models.detection.fasterrcnn_mobilenet_v3_large_fpn(pretrained=pretrained)\n", + " elif modelname == \'fasterrcnn_mobilenet_v3_large_320_fpn\':\n", + " self._model = torchvision.models.detection.fasterrcnn_mobilenet_v3_large_320_fpn(pretrained=pretrained)\n", + " else:", + " return ValueError('Unknown Pretrained Model')"] + coreRead = open(coreFile, "r") + coreLines = coreRead.readlines() + if coreLines[253][-14:-1] != 'User-Modified': + for count, cModLineNum in enumerate(cModLineNums): + coreLines[cModLineNum] = cModLineVals[count] + for count, cAddLineNum in enumerate(cAddLineNums): + coreLines.insert(cAddLineNum, cAddLineVals[count]) + coreRead.close() + coreWrite = open(coreFile, "w") + coreWrite.writelines(coreLines) + coreWrite.close() def modelName(type = 1): if type == 1: @@ -51,7 +81,7 @@ def returnModel(device, labelSet, modelLoc, modelFile): return model #### Live Detection -def detectLive(model, minDetectionScore = 0.90, showSight = True): +def detectLive(url , model, minDetectionScore = 0.90, showSight = True): ''' Descrption: ball detection ML Functions diff --git a/Code/Control/Laptop_Code/ball_detection/ball_detection_full.py b/Code/Control/Laptop_Code/ball_detection/ball_detection_full.py deleted file mode 100644 index 166653513289d7aaccb198e402261a1ec1abecb7..0000000000000000000000000000000000000000 --- a/Code/Control/Laptop_Code/ball_detection/ball_detection_full.py +++ /dev/null @@ -1,255 +0,0 @@ -## Codebase - Live Training-based Ball Detection -### Import Modules and Drive -import os -import cv2 -import glob -import torch -import numpy as np -import torch.nn as nn -import torch.quantization -import matplotlib.pyplot as plt -import matplotlib.patches as patches - -from urllib.request import urlopen, Request # - -from base64 import b64decode -from datetime import datetime -from matplotlib import patches -from detecto import core, utils -from torchvision import transforms -from matplotlib import pyplot as plt -from IPython.display import Image, display, Javascript -distanceDetect = __import__('ball_detection.distance-detection-torch.distance-detection-torch', fromlist = ['distanceDetect']).distanceDetect -print("torch.cuda.is_available() = ", torch.cuda.is_available()) - -minDetectionScore = 0.50 - -# change the IP address below according to the IP shown in the Serial monitor of Arduino code -# url='http://192.168.1.107/cam-lo.jpg' -url='http://192.168.4.1/cam-hi.jpg' -# url='http://192.168.1.107/cam-mid.jpg' - -#### Modify Detecto Core to include possibility of other base models -def modifyCore(): - cModLineNums = [221, 254] - cAddLineNums = [254, 256, 257, 258, 259] - - # REPLACABLE LINE FOR DIFFERENT LOCAL COMPUTER DEVICES - coreFile = 'C:\\Users\\uclal\\.conda\\envs\\FORAY\\Lib\\site-packages\\detecto\\core.py' - - cModLineVals = [" def __init__(self, classes=None, device=None, pretrained=True, modelname=\'fasterrcnn_resnet50_fpn\'):\n", - " self._model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=pretrained)\n"] - cAddLineVals = [" if modelname == \'fasterrcnn_resnet50_fpn\':\n", - " elif modelname == \'fasterrcnn_mobilenet_v3_large_fpn\':\n", - " self._model = torchvision.models.detection.fasterrcnn_mobilenet_v3_large_fpn(pretrained=pretrained)\n", - " elif modelname == \'fasterrcnn_mobilenet_v3_large_320_fpn\':\n", - " self._model = torchvision.models.detection.fasterrcnn_mobilenet_v3_large_320_fpn(pretrained=pretrained)\n", - " else:", - " return ValueError('Unknown Pretrained Model')"] - coreRead = open(coreFile, "r") - coreLines = coreRead.readlines() - if coreLines[253][-14:-1] != 'User-Modified': - for count, cModLineNum in enumerate(cModLineNums): - coreLines[cModLineNum] = cModLineVals[count] - for count, cAddLineNum in enumerate(cAddLineNums): - coreLines.insert(cAddLineNum, cAddLineVals[count]) - coreRead.close() - coreWrite = open(coreFile, "w") - coreWrite.writelines(coreLines) - coreWrite.close() - -### Train the Model -def modelName(type = 1): - if type == 1: - return 'fasterrcnn_resnet50_fpn' - elif type == 2: - return 'fasterrcnn_mobilenet_v3_large_fpn' - elif type == 3: - return 'fasterrcnn_mobilenet_v3_large_320_fpn' - else: - return ValueError('Unknown Pretrained Model') - -def modelTitle(modelLoc, device, type): - time = datetime.now().strftime("%Y%m%d_%H%M%S") - if device == 'cpu': - dev = 'cpu' - elif device[:4] == 'cuda': - dev = 'cuda' - print("using cuda") - return modelLoc + 'model_weights-' + str(type) + '-' + time + '-' + dev + '.pth' - -def returnModel(modelAction, device, trainLoc, labelSet, modelLoc, modelFile): - if modelAction == 'new': - dataset = core.Dataset(trainLoc) - model = core.Model(labelSet, device = device, modelname = modelName(modelType)) - losses = model.fit(dataset, epochs = 10, verbose = True) - model.save(modelTitle(modelLoc, device, modelType)) - elif modelAction == 'load': - model = core.Model(labelSet, modelname = modelname) - #model = core.Model(classes = labelSet, device = device, pretrained = True, model_name = modelName(modelType)) - model._model.load_state_dict(torch.load(modelLoc + modelFile, map_location = torch.device(device))) - # model = torch.quantization.quantize_dynamic(model.get_internal_model(), dtype=torch.qint8) - return model - -### Object Detection -def objectDetection(loc): - image = utils.read_image(loc) - predictions = model.predict(image) - tLabels, tBoxes, tScores = predictions - labels, boxes, scores = [[] for i in range(3)] - imHeight, imWidth, _ = image.shape - for count, box in enumerate(tBoxes): - x0, y0 = float(box[0]), float(box[1]) - x1, y1 = float(box[2]), float(box[3]) - w = x1 - x0 - h = y1 - y0 - center = (x0 + (w/2), y0 + (h/2)) - dCrop = [int(y0*cropFactor + y1*(1-cropFactor)), int(y1*cropFactor + y0*(1-cropFactor)), - int(x0*cropFactor + x1*(1-cropFactor)), int(x1*cropFactor + x0*(1-cropFactor))] - distance = distanceDetect('load-testImg', distWtsFile, [[x0, x1, y0, y1], [imWidth, imHeight]]) - avgClRGB = cv2.mean(image[dCrop[0]:dCrop[1], dCrop[2]:dCrop[3]]) - avgClHue = rgbToHue(avgClRGB) - print('Detection Score : ', round(float(tScores[count])*100, 2), '%') - print('Average Color (RGB) : ', avgClRGB) - print('Average Color (Hue) : ', avgClHue) - print('Bounding Box Center : ', center) - print('Distance to Ball : ', distance) - # print('Relative Distance : ', relativeDist) - # print('Coordinates : ', coordinates) - print() - if tScores[count] > minDetectionScore and avgClHue > colorLow and avgClHue < colorHigh: - scores.append(float(tScores[count])) - labels.append(tLabels[count]+' '+str(round(float(tScores[count])*100, 2))+'%') - boxes.append ([x0, y0, x1, y1]) - displayBoxedImage(image, boxes, labels) - -#### Live Detection -def detectLive(model, showSight = True): - gbx = 0 - gby = 0 - dist = 0 - - header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36."} - req = Request(url, headers=header) - img_resp = urlopen(req, timeout=60) - imgnp=np.array(bytearray(img_resp.read()),dtype=np.uint8) - frame=cv2.imdecode(imgnp,-1) - - labels, boxes, scores = model.predict(frame) - for i in range(boxes.shape[0]): - box = boxes[i] - x0, y0 = float(box[0]), float(box[1]) - x1, y1 = float(box[2]), float(box[3]) - w = x1 - x0 - h = y1 - y0 - dCrop = [int(y0*cropFactor + y1*(1-cropFactor)), int(y1*cropFactor + y0*(1-cropFactor)), - int(x0*cropFactor + x1*(1-cropFactor)), int(x1*cropFactor + x0*(1-cropFactor))] - avgClRGB = cv2.mean(frame[dCrop[0]:dCrop[1], dCrop[2]:dCrop[3]]) - avgClHue = rgbToHue(avgClRGB) - - if scores[i] > minDetectionScore and avgClHue > colorLow and avgClHue < colorHigh: - cv2.rectangle(frame, (int(x0), int(y0)), - (int(x1), int(y1)), - (0, 255, 0), 2) - if labels: - dist = distanceDetect('load-testImg', distWtsFile, [[x0, x1, y0, y1], frame.shape[:2]]) - gbx = int((x1 + x0) / 2) - gby = int((y1 + y0) / 2) - cv2.putText(frame, 'x:{}, y:{}'.format(gbx, gby), - (int(box[0]), int(box[1]) - 10), - cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 3) - - - cv2.imshow('Ball Detection', frame) - key = cv2.waitKey(1) & 0xFF - return gbx, gby,dist - -### Supplementary Functions -#### Display of Image with Bounding Boxes -def displayBoxedImage(image, boxes = [], labels = None): - fig, ax = plt.subplots(1) - if isinstance(image, torch.Tensor): - image = utils.reverse_normalize(image) - image = transforms.ToPILImage()(image) - ax.imshow(image) - if labels is not None and not utils._is_iterable(labels): - labels = [labels] - for i in range(len(boxes)): - box = boxes[i] - width, height = box[2] - box[0], box[3] - box[1] - initial_pos = (box[0], box[1]) - rect = patches.Rectangle(initial_pos, width, height, linewidth = 1, edgecolor = 'r', facecolor = 'none') - if labels: - ax.text(box[0] + 5, box[1] - 5, '{}'.format(labels[i]), color='red') - ax.add_patch(rect) - plt.show() - -#### Calculation of Hue from RGB (adopted from [code](https://www.geeksforgeeks.org/program-change-rgb-color-model-hsv-color-model/)) -def rgbToHue(RGB): - RGB = [val/255.0 for val in RGB] - cmax = max(RGB) - cmin = min(RGB) - diff = cmax - cmin - r, g, b = RGB[0:3] - if cmax == cmin: - return 0 - if cmax == r: - return (60 * ((g - b) / diff) + 360) % 360 - if cmax == g: - return (60 * ((b - r) / diff) + 120) % 360 - if cmax == b: - return (60 * ((r - g) / diff) + 240) % 360 - -#### Formula-based Depth Estimation (adopted from [mono_depth.py](https://github.com/agrawalparth10/FORAY-Perception/blob/master/mono_depth/mono_depth.py)) -def depth_estimate(figDims, boundingBox): - def x_hat(realLen, ip, i0, imageLen): - return (realLen * (ip-i0)) / imageLen - def y_hat(realLen, jp, j0, imageLen): - return (realLen * (jp-j0)) / imageLen - def z_hat(dist, pixelLen, imageLen): - return dist*(pixelLen/imageLen) - def cal_coordinates(dist, realLen, ip, jp, i0, j0, imageLen, pixelLen): - return (x_hat(realLen, ip, i0, imageLen), y_hat(realLen, jp, j0, imageLen), z_hat(dist, pixelLen, imageLen)) - def measure(dist, realLen, ip, jp, i0, j0, imageLen, pixelLen): - x_cor = x_hat(realLen, ip, i0, imageLen) - z_cor = z_hat(dist, pixelLen, imageLen) - dist = (x_cor ** 2 + z_cor ** 2) ** 0.5 - return dist - imHeight, imWidth = figDims - center = (imWidth // 2, imHeight // 2) - x, y, w, h = boundingBox[0:4] - relativeDist = measure (dist = 0.51, realLen = 0.228, ip = x, jp = y, i0 = center[0], j0 = center[1], imageLen = w, pixelLen = 500) - coordinates = cal_coordinates(dist = 0.51, realLen = 0.228, ip = x, jp = y, i0 = center[0], j0 = center[1], imageLen = w, pixelLen = 500) - return relativeDist, coordinates - -### Declare Varables and Constants -device = 'cuda' -imageLoc = './ball_detection/images/train-test-4/' # -labelSet = ['ball'] -modelLoc = './ball_detection/model_weights/' # -trainLoc = imageLoc + 'train/' -colorLow = 60 -colorHigh = 180 -modelFile = 'model_weights-2-20210818_002355-cpu.pth' -modelname = modelName(int(modelFile[14])) -modelType = 2 -cropFactor = 0.90 -distWtsFile = './ball_detection/distance-detection-torch/distance-detection-weights-3-2.0sd-20210808_212550.json' -modelAction = 'load' # 'load' to load previous model, 'new' to train new model (only possible on Colab) - -#FOR THE NEXT LINE : UNCOMMENT the first time you run, COMMENT OUT after the first time -#modifyCore() -######### - -# model = returnModel(modelAction, device, trainLoc, labelSet, modelLoc, modelFile) -# # # ## Testing (using Live Streaming) -# while True: -# detectLive(model) - -# ## Testing (using Untrained Images) -# for file in sorted(glob.glob(imageLoc + '/test/*.jpg')): -# objectDetection(file) -# -# ## Evaluation (using Trained Images) -# for file in sorted(glob.glob(imageLoc + '/train/*.jpg')): -# objectDetection(file) diff --git a/Code/Control/Laptop_Code/ball_detection/distance-detection-torch/__pycache__/distance-detection-torch.cpython-38.pyc b/Code/Control/Laptop_Code/ball_detection/distance-detection-torch/__pycache__/distance-detection-torch.cpython-38.pyc deleted file mode 100644 index 06f3a4090cab1824747125e7eb748088c17a673f..0000000000000000000000000000000000000000 Binary files a/Code/Control/Laptop_Code/ball_detection/distance-detection-torch/__pycache__/distance-detection-torch.cpython-38.pyc and /dev/null differ diff --git a/Code/Control/Laptop_Code/constants.py b/Code/Control/Laptop_Code/constants.py index 336b1d4ad468da7c2d177d72374d8f8fb72d00cf..add5d84528a380888d352f57cffcb3030d33dd1a 100644 --- a/Code/Control/Laptop_Code/constants.py +++ b/Code/Control/Laptop_Code/constants.py @@ -30,23 +30,34 @@ Bmin = 31 Bmax = 127 threshold = [Lmin, Lmax, Amin, Amax, Bmin, Bmax] -base_speed = 70 -seeking_speed = 100 +base_speed = 120 +seeking_speed = 50 LIDAR_Thres = 300 # mm - # PID Control in move2ball -kpx,kix,kdx = 1.5, 0.01, 0.5 -kpy,kiy,kdy = 1.2, 0.01, 0.5 +kpx,kix,kdx = 1.2, 0.01, 0.5 +# kpx,kix,kdx = 0.0, 0.00, 0.0 +kpy,kiy,kdy = 1.2, 0.05, 0.9 +# kpy,kiy,kdy = 0.0, 0.0, 0.0 # PID Control in move2goal -kpx_g,kix_g,kdx_g = 1.5, 0.01, 0.5 -kpy_g,kiy_g,kdy_g = 1.2, 0.01, 0.5 +# kpx_g,kix_g,kdx_g = 1.5, 0.01, 0.5 +kpx_g,kix_g,kdx_g = 1.6, 0.01, 0.7 +# kpx_g,kix_g,kdx_g = 0.0, 0.0, 0.0 +kpy_g,kiy_g,kdy_g = 2, 0.01, 0.7 +# kpy_g,kiy_g,kdy_g = 0.0, 0.0, 0.0 # difference between center of AT and center of goal -AT_goal_Delta = 110 #cm +AT_goal_Delta = 0 #cm + +AT_h1 = 140 # openmv: | esp32_cam:meters + +kph,kih,kdh = 1.2,0.01,0.5 + +# Break between AT detection during ball seeking +AT_detectBreak = 60 + -AT_h1 = 50 # meters -kph,kih,kdh = 1.2,0.01,0.5 \ No newline at end of file +url_gb = 'http://10.0.0.5/cam-hi.jpg' #01 diff --git a/Code/Control/Laptop_Code/imageThread_AT_gb_1_6.py b/Code/Control/Laptop_Code/imageThread_AT_gb_1_6.py new file mode 100644 index 0000000000000000000000000000000000000000..c38b498ce6ce7282a558f7cdc51a4b1f1c9933fa --- /dev/null +++ b/Code/Control/Laptop_Code/imageThread_AT_gb_1_6.py @@ -0,0 +1,38 @@ +# import sys +# sys.path.append("../") + +from ESP32_AT.imageTread_AT import get_AT_6DOF_info + +from constants import * +import ball_detection.ball_detection as ball_detection +import cv2 + +# detector = apriltag.Detector() + + +if __name__ == "__main__": + url_AT = 'http://10.0.0.9/cam-hi.jpg' #6 + url_gb = 'http://10.0.0.5/cam-hi.jpg' #1 + + tid,tx,ty,tz,rx,ry,rz = 0,0,0,0,0,0,0 + + # GB + ball_detection.modifyCore() + # modelLoc = './ball_detection/model_weights/' + # modelFile = 'model_weights-2-20210818_002355-cpu.pth' + model = ball_detection.returnModel(device, labelSet, modelLoc, modelFile) + + gbx, gby = -1, -1 # by default (-1 means no found green ball) + gb_dist = -1 # by default (-1 means no found green ball) + + + while True: + tid,tx,ty,tz,rx,ry,rz = get_AT_6DOF_info(url_AT) + + # gbx, gby, gb_dist = ball_detection.detectLive(url_gb, model, minDetectionScore, showSight = True) + + key=cv2.waitKey(5) + if key==ord('q'): + break + + cv2.destroyAllWindows() diff --git a/Code/Control/Laptop_Code/imageThread_AT_gb_2_4.py b/Code/Control/Laptop_Code/imageThread_AT_gb_2_4.py new file mode 100644 index 0000000000000000000000000000000000000000..62ffb17295f372259451b2dc2030c6303d368906 --- /dev/null +++ b/Code/Control/Laptop_Code/imageThread_AT_gb_2_4.py @@ -0,0 +1,39 @@ +# import sys +# sys.path.append("../") + +from ESP32_AT.imageTread_AT import get_AT_6DOF_info + +from constants import * +import ball_detection.ball_detection as ball_detection +import cv2 + +# detector = apriltag.Detector() + + +if __name__ == "__main__": + url_AT = 'http://10.0.0.3/cam-hi.jpg' #2 + url_gb = 'http://10.0.0.6/cam-hi.jpg' #4 + + + tid,tx,ty,tz,rx,ry,rz = 0,0,0,0,0,0,0 + + # GB + ball_detection.modifyCore() + # modelLoc = './ball_detection/model_weights/' + # modelFile = 'model_weights-2-20210818_002355-cpu.pth' + model = ball_detection.returnModel(device, labelSet, modelLoc, modelFile) + + gbx, gby = -1, -1 # by default (-1 means no found green ball) + gb_dist = -1 # by default (-1 means no found green ball) + + + while True: + tid,tx,ty,tz,rx,ry,rz = get_AT_6DOF_info(url_AT) + + # gbx, gby, gb_dist = ball_detection.detectLive(url_gb, model, minDetectionScore, showSight = True) + + key=cv2.waitKey(5) + if key==ord('q'): + break + + cv2.destroyAllWindows() diff --git a/Code/Control/Laptop_Code/main_keyboard.py b/Code/Control/Laptop_Code/main_keyboard.py index 553a0b29ecd1f987cbade2826e7a0d32534cb994..d1436398643b6c480532b27dc32979af53441a32 100644 --- a/Code/Control/Laptop_Code/main_keyboard.py +++ b/Code/Control/Laptop_Code/main_keyboard.py @@ -9,8 +9,10 @@ from ESP32_AT.imageTread_AT import get_AT_6DOF_info global ml,esp_cam_on,openmv_on ml = 0 -esp_cam_on = 0 -openmv_on = 1 +esp_cam_on = 1 +openmv_on = 0 +seekVertDir = 1 +AT_detected_time = time.time() if ml == 1: import ball_detection.ball_detection as ball_detection @@ -31,7 +33,7 @@ def serial_port_in_v1(serial_port): # DEBUG Verbose print("initiating one round of serial in ...") - for i in range(8): + for i in range(7): line = serial_port.readline() val = int(line.decode()) @@ -49,9 +51,10 @@ def serial_port_in_v1(serial_port): rz = val elif i == 6: LIDAR_dist1 = val - elif i == 7: - LIDAR_dist2 = val + # elif i == 7: + # LIDAR_dist2 = val + LIDAR_dist2 = 0 line = serial_port.readline() debugM = line.decode() @@ -190,16 +193,17 @@ def move2goal(tx, ty,tz): setpoint_x1 = 0.0 setpoint_y1 = 0.0 - if tz <200: - kpy_g,kiy_g,kdy_g = 0.0, 0.0, 0.0 - base_speed = 150 - AT_goal_Delta = 150 + if tz < 2.0: + kpy_g,kiy_g,kdy_g = 2, 0.1, 0.5 + base_speed = 200 + AT_goal_Delta = -150 else: - kpy_g,kiy_g,kdy_g = 2, 0.01, 0.5 - base_speed = 120 + kpy_g,kiy_g,kdy_g = 2, 0.1, 0.5 + # kpy_g,kiy_g,kdy_g = 0.0, 0.00, 0.0 + base_speed = 140 AT_goal_Delta = 0 - inputx = tx / 1.00 - inputy = (ty + AT_goal_Delta) / 1.00 # + inputx = tx * 100/ 1.00 + inputy = (ty * 100 + AT_goal_Delta) / 1.00 # pid_x = PID(kpx_g, kix_g, kdx_g, setpoint = setpoint_x1) pid_y = PID(kpy_g, kiy_g, kdy_g, setpoint = setpoint_y1) @@ -211,17 +215,17 @@ def move2goal(tx, ty,tz): outputx = pid_x(inputx) outputy = pid_y(inputy) - + print("outputy:{}".format(outputy)) # Vertical pwm1 = abs(outputy) pwm2 = abs(outputy) if(outputy > 0): - dir1 = '-' - dir2 = '-' - else: dir1 = '+' dir2 = '+' + else: + dir1 = '-' + dir2 = '-' # Horizontal lspeed = -1 * outputx + base_speed @@ -253,9 +257,9 @@ def ball_seeking(count_h,tx,ty): pwm1, pwm2, pwm3, pwm4 dir1, dir2, dir3, dir4 """ - global set_h + global set_h, seekVertDir if openmv_on == 1: - delta_h = 100 + delta_h = 100 # cm threshold_h = 20 elif esp_cam_on == 1: delta_h = 2 # meter @@ -282,6 +286,23 @@ def ball_seeking(count_h,tx,ty): else: pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = rotate_one_direction() + + # if time.time() > AT_detected_time + AT_detectBreak: + # AT_detected = AT_detect(tx, ty) + # AT_detected_time = time.time() + # + # while facingWall(): + # pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = rotate_one_direction_ssp(new_ssp) + # + # if AT_detected: + # current_h = get_altitude_from_AT(AT_h1,ty) + # + # if LIDAR_dist2 < LIDAR2_Thres: + # seekVertDir = 0 + # if baroHeight < baroThres: + # seekVertDir = 1 + # pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = move_in_spiral(new_ssp, seekVertDir) + return int(pwm1), int(pwm2), int(pwm3), int(pwm4), dir1, dir2, dir3, dir4 def vertical_control(current_h,set_h): @@ -317,6 +338,14 @@ def rotate_one_direction_ssp(ssp): return int(pwm1), int(pwm2), int(pwm3), int(pwm4), dir1, dir2, dir3, dir4 +def move_in_spiral(ssp, dir): + pwm1, pwm2, pwm3, pwm4 = ssp, ssp, ssp, ssp/2 + dir1, dir2, dir3, dir4 = '+', '+', '+', '-' + if dir == 0: + dir1, dir2 = '-', '-' + + return int(pwm1), int(pwm2), int(pwm3), int(pwm4), dir1, dir2, dir3, dir4 + def move2ball(gbx, gby, gb_dist): """ Description: @@ -394,6 +423,7 @@ def main_control(gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_dist1, LIDAR_d Output: pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 : Blimp motor manuver parameters ''' + print('in main_control') # placeholder pwm1, pwm2, pwm3, pwm4 = 0 , 0 , 0 , 0 dir1, dir2, dir3, dir4 = '+', '-', '+', '-' @@ -402,12 +432,14 @@ def main_control(gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_dist1, LIDAR_d ballCapture = ball_capture(LIDAR_dist1) goalDetect = goal_detect(tx, ty) - ballCapture = 1 + ballCapture = 0 # debug - # ballCapture = 1 + ballCapture = 1 # goalDetect = 0 + # ballDetect = 0 if ballCapture: # Ball captured + print('ballCapture TRUE') if goalDetect: # Goal detected # stop_all() # Debug pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = move2goal(tx, ty,tz) @@ -415,20 +447,24 @@ def main_control(gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_dist1, LIDAR_d # stop_all() # Debug pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = rotate_one_direction() else: # Ball not captured + print('ballCapture FALSE') if ballDetect: # Ball detected pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = move2ball(gbx,gby,gb_dist) else: # Ball not detected # stop_all() # Debug - # pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = rotate_one_direction() - pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = ball_seeking(count_h,tx,ty) + pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = rotate_one_direction() + + # pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = ball_seeking(count_h,tx,ty) return pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 def auto_control(serial_port,gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_dist1, LIDAR_dist2, debugM,count_h): # ===== STEP 1: TAKE ALL INPUT ===== - # gbx, gby, gb_dist = ball_detection.detectLive(model, minDetectionScore, showSight = True) + # print('in auto_control') + if ml ==1: + gbx, gby, gb_dist = ball_detection.detectLive(url_gb, model, minDetectionScore, showSight = True) line = serial_port.readline() - + # print('auto') if openmv_on == 1: if line == b'SERIAL_IN_START\r\n': tx, ty, tz, rx, ry, rz, LIDAR_dist1, LIDAR_dist2, debugM = serial_port_in_v1(serial_port) @@ -437,8 +473,12 @@ def auto_control(serial_port,gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_di if esp_cam_on == 1: - url = 'http://192.168.1.118/cam-hi.jpg' + url = 'http://192.168.0.204/cam-hi.jpg' tid, tx, ty, tz, rx, ry, rz = get_AT_6DOF_info(url) + LIDAR_dist1 = 0 + LIDAR_dist2 = 0 + debugM = "using two esp32 cam" + # ===== STEP 2: MAIN CONTROL LOOP ===== pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = main_control(gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_dist1, LIDAR_dist2, @@ -451,7 +491,7 @@ def auto_control(serial_port,gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_di def auto_init(init_count,gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_dist1, LIDAR_dist2, debugM): count_h = 0 - # gbx, gby, gb_dist = ball_detection.detectLive(model, minDetectionScore, showSight = True) + # gbx, gby, gb_dist = ball_detection.detectLive(url_gb, model, minDetectionScore, showSight = True) pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = main_control(gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_dist1, LIDAR_dist2, debugM, count_h) serial_port_out(serial_port, pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4) init_count += 1 @@ -571,7 +611,7 @@ def manual_control(Ctl_com,serial_port): waitTime = 0.05 # changed - # gbx, gby, gb_dist = ball_detection.detectLive(model, minDetectionScore, showSight = True) + # gbx, gby, gb_dist = ball_detection.detectLive(url_gb, model, minDetectionScore, showSight = True) serial_port_out(serial_port, pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4) @@ -605,8 +645,21 @@ def get_altitude_from_AT(AT_h,ty): altitude = AT_h - ty return altitude + + def test_function(): - url = 'http://192.168.1.118/cam-hi.jpg' + url = 'http://192.168.0.230/cam-hi.jpg' + tid, tx, ty, tz, rx, ry, rz = get_AT_6DOF_info(url) + print("testing new function") + print("-----------------------") + print("tid:{}".format(tid)) + print("tx,ty,tz:{},{},{}".format(tx,ty,tz)) + print("rx,ry,rz:{},{},{}".format(rx,ry,rz)) + + + +def test_function1(): + url = 'http://192.168.0.230/cam-hi.jpg' tid, tx, ty, tz, rx, ry, rz = get_AT_6DOF_info(url) print("testing new function") print("-----------------------") @@ -615,6 +668,7 @@ def test_function(): print("rx,ry,rz:{},{},{}".format(rx,ry,rz)) + # ===== Main Function ===== if __name__ == '__main__': # =========== SET UP ============ @@ -629,6 +683,7 @@ if __name__ == '__main__': # Loading the PyTorch ML model for ball detection if ml == 1: + ball_detection.modifyCore() model = ball_detection.returnModel(device, labelSet, modelLoc, modelFile) # =========== DECLARE VARIABLES =========== @@ -649,7 +704,7 @@ if __name__ == '__main__': Ctl_com = [0, 0, 0, 0, "+", "+", "+", "+"] # Trigger the ESP32_SLAVE to talk first """ - gbx, gby, gb_dist = ball_detection.detectLive(model, minDetectionScore, showSight = True) + gbx, gby, gb_dist = ball_detection.detectLive(url_gb, model, minDetectionScore, showSight = True) pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4 = main_control(gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_dist1, LIDAR_dist2, debugM, count_h) serial_port_out(serial_port, pwm1, pwm2, pwm3, pwm4, dir1, dir2, dir3, dir4) """ @@ -667,6 +722,7 @@ if __name__ == '__main__': while (flag == 1): if init_count == 0: init_count,count_h = auto_init(init_count,gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_dist1, LIDAR_dist2, debugM) + print('auto_control') auto_control(serial_port,gbx, gby, gb_dist, tx, ty, tz, rx, ry, rz, LIDAR_dist1, LIDAR_dist2, debugM,count_h) flag, print_count = keyboard_stop(flag,print_count) elif get_key('s'): diff --git a/README.md b/README.md index 0aa4f9e815baa5581ca59812114887b31c163cc0..948bc6f4216eddb0fd3e28211577e78e2882ba6b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,191 @@ # November 2021 Blimp Competition -This git will solely be used for the development of the autonomous blimps for the defend the republic competition \ No newline at end of file +Components Needed + +One ESP32 Feather Board, Stacking Header (https://www.adafruit.com/product/3405) +One Adafruit Neopixel LED Panel, Plain Header (https://www.adafruit.com/product/2945) +One Adafruit Radio FeatherWing 433MHz, Stacking Header (https://www.adafruit.com/product/3230) +Wires for I2C and motor connection +Electronic Components Mount* (in General 3D Print Design) +1 to 3 Lipo Batteries 3.7V-3.8V (https://www.amazon.com/Crazepony-Battery-PowerWhoop-Connector-Inductrix/dp/B07L9SHHFX) +One OpenMV H7 or H7 Plus (https://openmv.io/) +Velcro Tape** +Two Blimp*** (https://www.amazon.com/Swimmers-Remote-Control-Flying-Clownfish/dp/B005FYCBR6/ref=sr_1_5?crid=1QSXYA4FQYTC1&dchild=1&keywords=air+swimmers+remote+control+flying+fish&qid=1629779292&sprefix=air+swimmers%2Caps%2C229&sr=8-5) +Two 2.2kOhms resistors +Helium +Three DC motors (https://www.amazon.com/Hobbypower-Coreless-53000rpm-8-5x20mm-Propeller/dp/B076M7G24G/ref=pd_sbs_6/140-9159272-8519647?pd_rd_w=TKtuN&pf_rd_p=0f56f70f-21e6-4d11-bb4a-bcdb928a3c5a&pf_rd_r=VR3D6QW63FJ4FG19JE97&pd_rd_r=c10d4879-cb04-4453-87fe-8cfa37d04396&pd_rd_wg=7TWip&pd_rd_i=B076M7G24G&psc=1) +Three Propellers (https://www.amazon.com/Hobbypower-Coreless-53000rpm-8-5x20mm-Propeller/dp/B076M7G24G/ref=pd_sbs_6/140-9159272-8519647?pd_rd_w=TKtuN&pf_rd_p=0f56f70f-21e6-4d11-bb4a-bcdb928a3c5a&pf_rd_r=VR3D6QW63FJ4FG19JE97&pd_rd_r=c10d4879-cb04-4453-87fe-8cfa37d04396&pd_rd_wg=7TWip&pd_rd_i=B076M7G24G&psc=1) +Putty (https://www.amazon.com/Removable-Adhesive-Non-Toxic-Multipurpose-Photography/dp/B08DTHJTSZ/ref=sr_1_9?crid=38S8BXT4S632I&dchild=1&keywords=sticky+clay+adhesive+putty&qid=1629782480&sprefix=sticky+clay%2Ctoys-and-games%2C221&sr=8-9) + +*: Although we are currently using a 3D-printed gondola as a mount, anything else that can hold the components together can be used. +**: velcros are used to hold the mount to the blimp. If you don't have it, normal tape would suffice but it will be a little bit messier +***: The total mass of all components weight approximately around 120g. Therefore, a blimp that can carry that much weight is needed. For the Amazon product listed, you need two of them for the blimp to float in the air. +Connecting the ESP32 Feather with OpenMV + +If you are planning on using the I2C communication protocol, you need to connect the following from Feather to OpenMV: + +GND pin - GND pin +SCL/22 pin - P4 pin +SDA/23 pin - P5 pin + + +Just like the ESP32, we need to make sure the battery connected to OpenMV is of the right polarity. With the battery suggested, you need to reverse the wiring in order to connect a battery to OpenMV. +If the battery is properly connected, the OpenMV LED will blink white at the start. In addition to that, a debugging feature was added such that the OpenMV LED will be red once it is switched on. Everytime a function is called, it will blink green for the period of the function. +In addition to that, since OpenMV is not a stackable feather component, you need to add pull up resistors for both the SDA and SCL lines. The way to do this is by connecting two 2.2kOhms resistors where one end is connected to ESP32 3V and the other one is connected to the SDA and SCL respectively. + +Pullup resistor circuit example: + +(https://www.analog.com/en/technical-articles/i2c-primer-what-is-i2c-part-1.html) +Camera setup example: + +Note: Failure to properly setup the I2C protocol might cause the code to not work properly +Connecting the ESP32 Feather with the Motor Shield + +The Feather and the shield should be stackable. Make sure you have soldered the pins properly. +The shield runs on a separate power source. Make sure that you have a 3.7V Lipo Battery if you are planning to use the shield. +If the battery is properly connected, a green LED should light up. This LED also approximately indicate how much power the battery has left as it will get dimmer with lower voltage. +Connect the vertical motor to M1, right motor to M2, and left motor to M4. +The motor itself can be connected differently if you are using a different vehicle. If so, changes might be needed for the motor controller code section. + +Note: depending on the wiring and the propeller design, the propeller might push the blimp in the opposite direction as the code intended. Ways to solve this problem include reversing the polarity wiring of the motor, use the oppsite-direction propeller of the one you have right now (if it is clockwise, use the counter-clockwise propeller instead), or change the code so that all BACKWARD motor calls are FORWARD and vice versa. +DC Motor Shield setup example: + +Other Physical Setup + +The stack, starting from the bottom is the ESP32 Feather, Radiowing Feather, DC Motor Shield, and the Neopixel LED Panel. +Just like the OpenMV, reverse the wiring before connecting a battery to the ESP32. Optional: if weight is an issue, you can use a single battery and connect the ESP32 and OpenMV in parallel. However, it is strongly advised that you use a separate battery for the DC Shield as it consumes a lot of power. +Fill the two blimp balloons with Helium until both of them together can carry around 130-140g. In order to test this, tie a string to the blimp and attach the string to a heavier object like a smartphone. First, weight the smartphone by itself. Then, weight the smartphone when it is attached to the string. The difference will be what the blimp can carry. +Using the velro tape, attach the top of the electronic mount to the bottom of the blimp +Similarly, use velcro tape to attach the OpenMV camera to the front of the mount in such a way that the camere is facing the forward direction. +Plug the motor to its corresponding location on the mount +Place the ESP32 and the rest of the stack into the mount +Test to see if the whole blimp floats weightlessly in the air. If it is falling down, add more helium to the blimp balloon. If it is floating up, add putty into the mount. Repeat this until it approximately stays still in the air without any external force acting on it. + +Blimp stack setup: + +Blimp front view: + +Blimp bottom view: + +Complete setup: + +Setting Up the General Libraries and Codes + +Go to https://git.uclalemur.com/arnhold/espmeshnetworking/-/tree/master/MeshCode + +In that repository, follow the instructions to install the ArnholdMesh.zip and Painless_Mesh.zip libraries. +If you are planning on doing demo using the LED panel, please also install Adafruit Neopixel library through the Library Manager in your Arduino IDE +If you are using the Adafruit Motor shield, do not install the default library through the library manager. Instead, in your Arduino IDE, go to Sketch > Include Library > Add .ZIP Library +Download or Clone the Adafruit_Motor_Shield_V2_Library.zip from this repository and use that for Step 4. The reason we are using an alternate library from the default one is because the motor library and the mesh library uses the same name for one of their macros. This changes the macro's name in the motor library to ensure that this doesn't happen. +Download the PID library, which is needed for the motion control. (https://playground.arduino.cc/Code/PIDLibrary/) + +Running the Code + +Create a folder name feather_main_personaldemo in your directory of choice. +Copy everthing in the Main Code repository into the feather_main_personaldemo folder except for OpenMV_main.py, the motor library, and the other ino file that is not feather_main_personaldemo. +Open feather_main_personaldemo.ino and upload the sketch into your ESP32 Feather +Upload the OpenMV_main.py into your OpenMV camera as main.py so that it can run without being connected to the IDE +By default, it should start detecting and responding to green blob. + +Varying the Parameters +If we want to vary the behaviour of the blimp, there are a couple of parameter that we can use to do that. The section below explains what message needs to reach the ESP32 through the mesh network. However, the methodology of how the message is sent to the blimp node is completely up to you. Another section further below will give you an example remote controller you can use (although not the best) + + +Color Detection Threshold (C) + +By default, the blimp will start trying to detect the biggest green blob. However, there are 2 ways we can change the threshold so that the program will look for other colored blobs. +The first way is to provide a single-digit color code. The code along with the command character: + +"C1": generic green blob +"C2": generic blue blob +"C5": generic red blob + + +If the generic colors are not enough, you can also prescribe a specific thresholds for the robot to use. The format will be something like: + +"C(Lmin) (Lmax) (Amin) (Amax) (Bmin) (Bmax)", without the brackets +"C30 100 12 -19 0 -120" + + + + + +PID Constants (T) + +You can also vary the PID constant for the horizontal motion. By default, these are the constants: + +Kpx = 1 +Kix = 0.05 +Kdx = 0.25 + + +In order to change the constant which are double datatype, the generic form of the message should be: + +"TP0.1 I0.2 D0.3" + + +For this command, you can also just change one or 2 parameters by doing the command like: + +"TP0.5" +"TI0.9 D1.5" + + + + + +Pause the Blimp (P) + +If you want to stop the mesh from moving, a quick way is to use the pause feature: + +"P1": pause the blimp program +"P0": resume the blimp program + + + + + +Change the Base Speed (S) + +The base speed is used to move towards the tracked object. If it is 0, it the blimp will not actively move towards the object if it is detected by the camera. The command format is: + +"S0" +"S250" + + + + + +LED Panel Debugging with the Blimp + +OpenMV LED: blink green when a function is called. red on standby +PIN31: state of the blimp. red is standby, yellow is paused, white is seeking, blue is done +PIN30: kp change. blink green if new kp is higher then old kp. red if less. white if the same +PIN29: ki change. blink green if new ki is higher then old ki. red if less. white if the same. +PIN28: kd change. blink green if new kd is higher then old kd. red if less. white if the same +PIN27: base speed indicator. the white LED intensity scale with the base speed, with 255 speed being the brightest +PIN26: minimum threshold for color detection, display the minimum LAB value in terms of RGB +PIN25: maximum threshold for color detection, display the maximum LAB value in terms of RGB +PIN24: left motor speed. display the speed of the motor that scales with the light intensity. led will be red if the motor is pushing the blimp forward, blue if backward +PIN17: vertical motor speed. display the speed of the motor that scales with the light intensity. led will be red if the motor is pushing the blimp upward, blue if downward +PIN16: right motor speed. display the speed of the motor that scales with the light intensity. led will be red if the motor is pushing the blimp forward, blue if backward + +Using the Camera.cpp Class Separately + + +Install OpenMV Arduino RPC Library into your Arduino IDE. + + +At the top of your main code, include the following lines to create the i2c interface that the OpenMV will communicate with the feather: + #include "Camera.h" + openmv::rpc_scratch_buffer<256> scratch_buffer; // All RPC objects share this buffer. + openmv::rpc_i2c_master interface(0x12, 100000); //to make this more robust, consider making address and rate as constructor argument + + +You need to pass the interface's address when you are constructing the camera: + Camera cam(&interface); + + +Now, you should be able to use all the function in the Camera.h file. + + +If you want to make a new function in the OpenMV and create an interfacing function corresponding to it on Arduino, please refer the RPC library for further clarification. https://github.com/openmv/openmv-arduino-rpc